Login verbessern mit AJAX/PHP?

Ich habe ein Login gebaut. Jenen sollen wir nun ausschließlich mit AJAX verbessern. (Wir dürfen dabei nicht sowas wie JQUERY verwenden. Das wissen fehlt uns aber dafür an meisten. Vielleicht kann jemand mir dabei helfen mein Login umzubauen und zu verstehen was ich mache.

Mein Login-Quelltext:

<?php
$pdo = new PDO('mysql:host=localhost;dbname=phptest', 'root', '');

if(isset($_GET['login'])) {
  $email = $_POST['Email'];
  $passwort = $_POST['Passwort'];

  $statement = $pdo->prepare("SELECT * FROM login WHERE Email = :Email");
  $result = $statement->execute(array('Email' => $email));
  $user = $statement->fetch();

  //Überprüfung des Passworts
  if ($user !== false && password_verify($passwort, $user['Passwort'])) {
    $_SESSION['userid'] = $user['ID'];
    die('Login erfolgreich. Weiter zu <a href="index.php?site=Startseite">internen Bereich</a>');
  } else {
    $errorMessage = "E-Mail oder Passwort war ungültig<br>";
  }

}
?>
<!DOCTYPE html>
<html>
<head>
  <title>Login</title>
</head>
<body>

<?php
if(isset($errorMessage)) {
  echo $errorMessage;
}
?>

<form action="Loginseite.php?login=1" method="post">
  E-Mail:<br>
  <input type="email" size="40" maxlength="250" name="Email" required><br><br>

  Dein Passwort:<br>
  <input type="password" size="40" maxlength="250" name="Passwort" required><br>

  <input type="submit" value="Login">
</form>
</body>
</html>
Computer, HTML, programmieren, JavaScript, AJAX, PHP, Webdesign
PHP MySql Login / Passwort überprüfung?

Kann mir da jemand sagen wo der Fehler liegt ? Ich bin da am verzweifeln.

Login, Registrierung, Fehlermeldung, SQL Struktur habe ich alles in die Frage gepackt damit ihr einen besseren überblick habt.

login.php:

<?php
   $server = 'localhost';
   $user = 'root';
   $psw = null;
   $dbName = 'TestApp';
try {
   $conn = new PDO('mysql:host='.$server.';dbname='.$dbName.';charset=utf8', $user, $psw);
   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

    $username = htmlspecialchars(stripslashes(trim($_POST['username'])));
    $password = htmlspecialchars(stripslashes(trim($_POST['password'])));

    $statement = $pdo->prepare("SELECT * FROM user WHERE username = :username");
    $result = $statement->execute(array('username' => $username
                                    ));
    $user = $statement->fetch();
    //Überprüfung des Passworts
    if ($user !== false && password_verify($username, $password['passwort'])) {
        $_SESSION['userid'] = $user['id'];
        die('Login erfolgreich. Weiter zu <a href="geheim.php">internen Bereich</a>');
    } else {
        $errorMessage = "Nutzername oder Passwort war ungültig<br>";
    }

}catch (PDOException $e) {
    print "Error!: " . $e->getMessage() ;
    exit;
  }

Konsole :

<br />
<b>Warning</b>: Undefined variable $pdo in <b>C:\xampp\htdocs\Test\assets\php\login.php</b> on line <b>14</b><br />
<br />
<b>Fatal error</b>: Uncaught Error: Call to a member function prepare() on null in C:\xampp\htdocs\Test\assets\php\login.php:14
Stack trace:
#0 {main}
 thrown in <b>C:\xampp\htdocs\Test\assets\php\login.php</b> on line <b>14</b><br />

register.php

<?php
   $server = 'localhost';
   $user = 'root';
   $psw = null;
   $dbName = 'TestApp';
try {
   $conn = new PDO('mysql:host='.$server.';dbname='.$dbName.';charset=utf8', $user, $psw);
   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

// POST wird mit AJAX gesendet
   $username = htmlspecialchars(stripslashes((trim($_POST["username"])))) ;
   $password =  password_hash(htmlspecialchars(stripslashes((trim($_POST["password"])))) ,PASSWORD_DEFAULT) ;
   $cash =     100;

// Schreibt in die Datenbank

   $sql = "INSERT INTO user (username,password,cash) VALUES (:username,:password,:cash) ";
   $sqlvars = array("username"  => $username,
   "password" => $password,
   "cash" => $cash);
   $Abfrage = $conn->prepare($sql);
   $Abfrage->execute($sqlvars);


}catch (PDOException $e) {
  print "Error!: " . $e->getMessage() . "<br/>";
  exit;
}

SQL STRUKTUR :

Datenbankname : Test

Tabelle : user , 5 Spalten/Rows

  • id | int , (auto increment)
  • username | varchar , (unique)
  • password | varchar, (gehasht mit salt sha512)
  • cash | varchar
  • time | datetime, (mit current time stamp)

und ich mache alles mit AJAX.

-PDO statt mysqli

Computer, Webseite, Programmierer, programmieren, JavaScript, Datenbank, Informatik, MySQL, PHP, Webentwicklung, Backend, phpMyAdmin, PDO
Mehrere Webseiten über ein Login System organisieren?

Ich hab mehrere Webseiten die teils über verschiedene Server verstreut sind und es wäre ziemlich lästig für jede ein eigenes zu machen also hab ich beschlossen sowas ähnliches wie oAuth nur mit PHP zu bauen, am besten so zweckmäßig wie möglich um das ganze zu erleichtern. Kann man das Konzept als fertig bezeichnen oder muss man da noch was dran ändern?

Dass man sich anmelden kann wird man auf die anmeldeseite geleitet, man gibt seine Daten ein und man wird auf die eigentliche Seite zurückgeleitet

um einen Benutzer anzumelden greift der dienst als erstes auf einen langen string zurück nennen wir es mal API Token. dieser wird während der nutzer auf die anmeldeseite geleitet wird mit post übergeben um zum einen sicherzustellen dass die webseite autorisiert dazu ist daten anzufragen und zum anderen dass das login system weiß wohin es den token und den Nutzer nach der anmeldung leiten soll. Dann meldet sich der nutzer auf der loginseite n und der nutzername und das passwort wird validiert etc. danach stellt der authentifizierungsserver das access Token aus, was beim weiterleiten wieder zurückgepostet wird. Dieses access token wird dann beim nutzer als cookie gespeichert und der Dienst der dann die Zeichenkette erhalten hat fragt dann die benötigten daten(nutzername, geburtsdatum etc.) mit curl von autentifizierungsserver ab und somit ist der nutzer angemeldet.

Das heißt ich müsste das script was prüft welchen Benutzername man hat muss mit jedem einzelnen Seitenaufruf erneut mittels dem access token den nutzernamen anfragen, eventell kann man das aber auch über nen session cookie mit nutzername regeln

Also: kann man das umsetzen oder habe ich was vergessen?

Computer, Webseite, programmieren, JavaScript, Datenbank, MySQL, PHP, Webserver
Linux Debian 9 Stretch Installiert PHP8 nicht?

Moin Leute habe jede Anleitung im Internet probiert aber ich bekomme immer wieder den gleichen Fehler ich habe keine ahnung mehr was ich noch machen oder versuchen kann?!

Ign:1 https://packages.sury.org/php stretch InRelease
Ign:2 https://packages.sury.org/php stretch Release
Holen:3 ftp://ftp.de.debian.org/debian stretch InRelease
Ign:4 https://packages.sury.org/php stretch/main all Packages
Ign:5 https://packages.sury.org/php stretch/main amd64 Packages
Ign:3 ftp://ftp.de.debian.org/debian stretch InRelease
Ign:6 https://packages.sury.org/php stretch/main Translation-de
OK:7 ftp://ftp.de.debian.org/debian stretch Release
Ign:8 https://packages.sury.org/php stretch/main Translation-de_DE
Ign:9 https://packages.sury.org/php stretch/main Translation-en
Ign:4 https://packages.sury.org/php stretch/main all Packages
Ign:5 https://packages.sury.org/php stretch/main amd64 Packages
Ign:6 https://packages.sury.org/php stretch/main Translation-de
Ign:8 https://packages.sury.org/php stretch/main Translation-de_DE
Ign:9 https://packages.sury.org/php stretch/main Translation-en
Ign:4 https://packages.sury.org/php stretch/main all Packages
Ign:5 https://packages.sury.org/php stretch/main amd64 Packages
Ign:6 https://packages.sury.org/php stretch/main Translation-de
Ign:8 https://packages.sury.org/php stretch/main Translation-de_DE
Ign:9 https://packages.sury.org/php stretch/main Translation-en
Ign:4 https://packages.sury.org/php stretch/main all Packages
Ign:5 https://packages.sury.org/php stretch/main amd64 Packages
Ign:6 https://packages.sury.org/php stretch/main Translation-de
Ign:8 https://packages.sury.org/php stretch/main Translation-de_DE
Ign:9 https://packages.sury.org/php stretch/main Translation-en
Ign:4 https://packages.sury.org/php stretch/main all Packages
Ign:5 https://packages.sury.org/php stretch/main amd64 Packages
Ign:6 https://packages.sury.org/php stretch/main Translation-de
Ign:8 https://packages.sury.org/php stretch/main Translation-de_DE
Ign:9 https://packages.sury.org/php stretch/main Translation-en
Ign:4 https://packages.sury.org/php stretch/main all Packages
Fehl:5 https://packages.sury.org/php stretch/main amd64 Packages
  403  Forbidden
Ign:6 https://packages.sury.org/php stretch/main Translation-de
Ign:8 https://packages.sury.org/php stretch/main Translation-de_DE
Ign:9 https://packages.sury.org/php stretch/main Translation-en
Paketlisten werden gelesen... Fertig
W: The repository 'https://packages.sury.org/php stretch Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
E: Fehlschlag beim Holen von https://packages.sury.org/php/dists/stretch/main/binary-amd64/Packages  403  Forbidden
E: Einige Indexdateien konnten nicht heruntergeladen werden. Sie wurden ignoriert oder alte an ihrer Stelle benutzt.


Computer, Linux, PHP, Debian 9
Wie gebe ich bei PHP mehrere Bedingungen in einer Schleife ein?

Hallo,

ich möchte gerne 2 Bedingungen in einer PHP for – Schleife unterbringen.

Dazu habe ich mich an diese Anleitung gehalten und die beiden Bedingungen mit dem && Operator verknüpft.

https://www.php.de/forum/webentwicklung/php-einsteiger/php-tipps-2006/41760-while-schleife-mit-mehreren-bedingungen

Trotzdem bekomme ich ständig die Fehlermeldung, das PHP kein ; (Strichpunkt) erwartet, sondern eine schließende runde Klammer.

Mein Editor zeigt mir den Fehler in der zweiten for – Schleife bei der Variablen $tageszahl an. Dort wird der Strichpunkt bemängelt.

Desweiteren habe ich versucht, beide Bedingungen zusätzlich in runde Klammern zu setzten. Da wird dann außer dem Strichpunkt auch noch der && Operator bemängelt.

Hier ist mein Code:

        <table border="1">
            <tr>
                <th>Mo</th>
                <th>Di</th>
                <th>Mi</th>
                <th>Do</th>
                <th>Fr</th>
                <th>Sa</th>
                <th>So</th>
            </tr>
        <?php 
            
            $reihen = 6;
            $zellen = 7; 
            $enddatum_monat = date("t");
            
            for($tr = 1; $tr <= $reihen; $tr++ ) {
                echo "<tr>";
                for($td = 1; $td <= $zellen; $td++ && $tageszahl = 1; $tageszahl <= $eintrag; $tageszahl++)  {
                    echo "<td> $tageszahl </td>"; 
                }
                
                echo "</tr>";
            }           

        ?>
        </table>

Es wäre nett, wenn mir jemand zeigen würde, wie mehrere Bedingungen korrekt in einer Schleife untergebracht werden.

Danke

Computer, programmieren, Schleifen, PHP
HTML Kontaktformular per PHP an Mail senden?

Hallo, ich hab ein Kontaktformular in HTML erstellt bei dem man auch Dateien hochladen kann. Ich hab es auch schon so eingestellt dass alle Daten (Antworten) an mich per Mail gesendet werden, allerdings schaffe ich es nicht dass auch die Dateien als Anhang in der Mail mit gesendet werden, kann mir dabei jemand helfen?

Hier mein Code:

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="style.css" type="text/css">
    <title>NAME | Kontakt</title>
    <meta charset="utf-8">
   </head>
   <body>
    <div id="wrapper">
      <header><a href="index.html"><img src="bilder/logo vorschau.png" alt="Das Logo konnte nicht geladen werden!"></a></header>


      <nav>
        <ul>
          <li><a href="index.html">Home</a></li>
          <li><a href="ueber.html">Über</a></li>
          <li><a href="kontakt.html"><b>Kontakt</b></a></li>
        </ul>
      </nav>


      <section>
        <div id="kontaktformular">
          <h1>Wie können wir dir helfen?</h1>
          <?php
          if(isset($_POST["submit"])){
            mail("reinhard.habisohn@icloud.com", "Kontaktformular von ".$_POST["name"], 'Name: '.$_POST["name"].' ||  Email: '.$_POST["email"].' ||  Telefonnummer: '.$_POST["telefon"].' ||  Priorität: '.$_POST["priorität"].' ||  Betreff: '.$_POST["betreff"].' ||  Nachricht: '.$_POST["message"]);
            ?>
            <em><h1 style="color: green;">Deine Anfrage wurde erfolgreich versendet!</h1><a>(Die Antwort senden wir dir an die angegebene E-Mail Adresse!)</a></em>
            <?php
          }
           ?>
          <form action="index.php" method="post" enctype="multipart/form-data">
            <br><label>Name:</label><br>
            <input type="text" name="name" required><br>
            <br><label>E-Mail:</label><br>
            <input type="email" name="email" required><br>
            <br><label>Telefonnummer (optional):</label><br>
            <input type="number" name="telefon"><br>
            <br><label>Wichtigkeit:</label><br>
            <select name="priorität" required>
              <option value"gering">Gering</option>
              <option value"mittel">Mittel</option>
              <option value"hoch">Hoch</option>
            </select><br>
            <br><label>Betreff:</label><br>
            <input type="text" name="betreff" required><br>
            <br><label>Nachricht:</label><br>
            <textarea rows="7" name="message" required></textarea><br>
            <br><label>Anhang (optional):</label><br>
            <input type="file" name="datei[]" multiple><br>
            <br><button type="submit" name="submit">Absenden</button>
          </form>
        </div>
      </section>
    </div>
  </body>   
</html>

Vielen Dank im Vorhinein!

Computer, HTML, Kontakt, PHP, kontaktformular
PHP: Ergebnis erst später aufdecken nach Antwort?

Hey,

ich habe folgenden html und php-Code.

<form action="Subtraktion (1).php" method="post" target="">
<table>
<tr>
<td><font face="Roboto Slab" size=+1>Anzahl der Aufgaben eingeben</font></td>
<td><input type="Text" name="z" value="" size="" maxlength=""></input></td>
<td align="center"><input type="submit"  style="font-family: 'Roboto Slab'"  background-color="black" name="y" value="Absenden"></td></tr>
</table>
<br>
</form>

<?php
if((isset($_POST['z'])) and (is_numeric($_POST['z'])))
{
$zahl = $_POST['z'];

{

 while($zahl>0)
  {

  $a = rand(5, 10);
  $b = rand(0, 5);
  $erg = $a - $b;
  $zahl = $zahl - 1;

  echo "<table class='Tab'>";
  echo "<table border='1'>";
  echo "<tr> <td>$a - $b = ?</td> <td><input type=\"Text\" name=\g\"  value=\"\">\n</td><td>$a - $b = $erg</td></tr>";
  echo "</table>";
}
}}

?>
</body>
</html>

Damit soll der Nutzer Aufgaben – so viel wie er anfangs ausgewählt hat, berechnet können. Die Aufgaben bestehen hierbei aus zufälligen Zahlen. Meine Frage wäre jetzt: wie ich es schaffen kann (mit eher einfachen Befehlen), den Code so zu schreiben, dass das Ergebnis – hier: $a - $b = $erg – erst enthüllt wird, sobald der Nutzer ins Textfeld seine Antwort zur Aufgabe eingegeben hat?

Hier nochmals die Stelle (auch oben zusammen mit dem gesamten Code sichtbar):

echo "<table class='Tab'>";
echo "<table border='1'>";
echo "<tr> <td>$a - $b = ?</td> <td><input type=\"Text\" name=\g\" value=\"\">\n</td><td>$a - $b = $erg</td></tr>";
echo "</table>";

Vielen Dank :)

HTML, programmieren, rechnen, PHP, Textfeld, Variablen, Zufallszahlen, Antwort
PHP dynamisch mit unterschiedlichen Datenbanken verbinden?

Hallo!

Folgende Situation:

Es gibt mehrere Datenbanken. Eine für alle Installationen meines Projektes (beinhaltet Zugangsdaten für Schul-DB's) und dann weitere, schulspezifische Datenbanken, in denen jeweils andere Dinge stehen (wie zum Beispiel Schüler mit ihren Logindaten, etc.)

Der Benutzer ruft also eine Loginseite auf und gibt eine Schul-ID ein. Nach Buttonklick wird die an ein PHP-Skript übergeben, welche dann aus der Datenbank aller Instanzen die entsprechenden Zugangsdaten für die schulspezifische Datenbank ausliest (anhand der Schul-ID).

Anschließend sollen diese als Variable gesetzt werden, sodass von überall in diesem Skript darauf zugegriffen werden kann. Dabei soll das Ganze allerdings nur für diese Session ersetzt werden und nicht in der Datei. Sodass andere Schüler andere Schul-ID's und damit auch andere Schul-DB's verwenden können.

Wenn der Benutzer dann auf der Loginseite seinen Benutzernamen und sein Passwort eingibt, wird dieses wieder an das PHP-Skript übergeben, welches nun in der schulspezifischen DB nachschaut, ob dort der entsprechende Nutzer existiert.

Folgendes Schema habe ich bis jetzt:

class DB {
  private static $_api_username = "root";
  private static $_api_password = "";
  private static $_api_host = "localhost";
  private static $_api_name = "programmingnow_host";
  private static $_api;

  private static $_db_username = $_SESSION['school_db_user'];
  private static $_db_password = $_SESSION['school_db_pass'];
  private static $_db_host = "localhost";
  private static $_db_name = $_SESSION['school_db_name'];
  private static $_db;

  function __construct() {
    try {
      self::$_api = new PDO("mysql:host=" . self::$_api_host . ";dbname=" . self::$_api_name . ";charset=utf8mb4",  self::$_api_username , self::$_api_password);

      if (isset($_SESSION['school_db_name'])) {
        self::$_db = new PDO("mysql:host=" . self::$_db_host . ";dbname=" . self::$_db_name . ";charset=utf8mb4",  self::$_db_username , self::$_db_password);
      }
    }
    catch(PDOException $e) {
      echo "Datenbankverbindung gescheitert!";
      die();
    }
  }
  
  function connectToSchoolDB($school_id) {
    $stmt = self::$_api->prepare("SELECT instance_db_name, instance_db_user, instance_db_pass FROM instances WHERE instance_key=:instance_key");
    $stmt->bindParam(":instance_key", $school_id);
    $stmt->execute();
    $result = $stmt->fetch();
    $result['instance_db_name'] = $_SESSION['school_db_name'];
    $result['instance_db_user'] = $_SESSION['school_db_user'];
    $result['instance_db_pass'] = $_SESSION['school_db_pass'];
  }

  [..] // Der ganze Rest an Funktionen (wie Login)
} 

Der obige Code funktioniert aber nicht.

Könnt ihr mir da helfen? Wie kann ich das realisieren bzw. wo liegt der Fehler?

Danke schon einmal im Voraus!

VG!

Computer, Technik, HTML, Webseite, programmieren, MySQL, PHP, Technologie, Webentwicklung
PHP Warning: Undefined array key "status"?

Hey,

Ich habe ein Array in PHP programmiert, welches per MySQL alle Sachen selektiert.

Nun werden aber die Arrays nicht gefunden.

Code:

$stmt = $link->prepare('SELECT * FROM tickets ORDER BY created DESC');
$stmt->execute();
$resultSet = $stmt->get_result();

// pull all results as an associative array
$tickets = $resultSet->fetch_all();

<?php foreach ($tickets as $ticket): ?>
  <a href="view.php?id=<?= $ticket['id'] ?>" class="ticket">
    <span class="con">
      <?php if ($ticket['status'] == 'open'): ?>
        <i class="far fa-clock fa-2x"></i>
      <?php elseif ($ticket['status'] == 'resolved'): ?>
        <i class="fas fa-check fa-2x"></i>
      <?php elseif ($ticket['status'] == 'closed'): ?>
        <i class="fas fa-times fa-2x"></i>
      <?php endif; ?>
    </span>
    <span class="con">
      <span class="title"><?= htmlspecialchars($ticket['title'], ENT_QUOTES) ?></span>
      <span class="msg"><?= htmlspecialchars($ticket['msg'], ENT_QUOTES) ?></span>
    </span>
    <span class="con created"><? date('F dS, G:ia', strtotime($ticket['created'])) ?></span>
  </a>

Fehler:

C:\xampp\htdocs\ticket.php on line 271
" class="ticket">
Warning: Undefined array key "status" in C:\xampp\htdocs\ticket.php on line 273

Warning: Undefined array key "status" in C:\xampp\htdocs\ticket.php on line 275

Warning: Undefined array key "status" in C:\xampp\htdocs\ticket.php on line 277

Warning: Undefined array key "title" in C:\xampp\htdocs\ticket.php on line 282

Warning: Undefined array key "msg" in C:\xampp\htdocs\ticket.php on line 283

Kann mir jemand sagen, ob ich etwas übersehen habe?

Computer, Webseite, programmieren, MySQL, PHP, Webentwicklung
Php Hashen mit "Salz" / PASSWORD_DEFAULT?
$password = "passwort";
$hashed = password_hash($password, PASSWORD_DEFAULT);
if(password_verify($password, $hashed)){
    echo $hashed;
}

Also so würde ich jetzt den string "passwort" hashen mit etwas vollkommen zufälligem / salz und es zb auf meiner datenbank speicher, alles schön und gut.

Jetzt kommt das große aber, wenn ich die Seite von irgendwo anders aufrufe. Dann mich einloggen will wird das eingegebene wieder gehasht mit einem salz um es mit der sql datenbank abzugleichen.

Das geht aber garnicht weil dieses Salz doch immer ein anderer ist wenn ihr versteht was ich meine.

Hashes ohne salz vergleichen kriege ich schonmal ohne probleme hin.

zum beispiel so würde mein login/abgleich mit der datenbank aussehen :

if(isset($_POST["username"]) && isset($_POST["password"])){

$hash = hash("sha512", $_POST["password"]);

$mysqli1 = new mysqli($servername, $user, $pw, $db);
$result = $mysqli1->query('SELECT id FROM user WHERE username = "'. $_POST["username"]. '"  ');
$result1 = $mysqli1->query('SELECT id FROM user WHERE password = "'. $hash. '"  ');

if($result->num_rows == 1 and $result1->num_rows == 1 ) {
  echo "Login erfolreich"; 
} else {
    echo "Falsches Passwort oder Nutzername";
}
$mysqli1->close();
}

Hab jetzt mysqli benutzt weil es irgendwie übersichtlicher ist, und ob das anfällig für Sql Injections oder so ist spielt eigentlich keine rolle erstmal. Manche stört das

PC, Server, Computer, Technik, Web, Webseite, programmieren, Passwort, Hash, Informatik, IT-Sicherheit, Kryptographie, MySQL, PHP, Programmiersprache, Technologie, web-development, Web Developer
Wie vererbt man PHP Bedingungen beim paginieren einer Tabelle an die folgenden Seiten?

Hallo,

eigentlich habe ich 2 Fragen zu PHP, aber das hätte nicht alles ich die Überschrift gepasst.

Frage 1

Ich erlerne gerade PHP und MySQL. Dafür habe ich in einer Datenbank eine Tabelle über Internet Radiostationen angelegt, mit Sendername, Land, Kontinent, StreamURL, Genre usw. Über ein Auswahlmenü lässt sich die Tabelle nach Sendernamen, Land oder Kontinent sortieren. Das klappt soweit auch. Damit aber nicht mehr als 20 Radiostationen auf einer Seite erscheinen, habe ich unter Zuhilfenahme eines Buches die Seiten paginiert (Steige da aber noch nicht so richtig durch). Wenn ich nun die Radiostationen nach Land oder Kontinent sortiere, dann klappt das zwar auf der ersten Seite aber auf der zweiten Seite ist wieder alles nach den Sendernamen sortiert.

Was muss ich machen, damit die Sortier – Auswahl auch an die folgenden Seiten übergeben wird?

Hier ist der PHP Code

<?php

$sortieren = $_POST['sortieren'];

if($sortieren == "Sendername") {

$ergebnis = $mysqli -> query("SELECT * FROM sender ORDER BY sendername LIMIT $start, $anzahl_pro_seite");

} elseif($sortieren == "Kontinent") {

$ergebnis = $mysqli -> query("SELECT * FROM sender ORDER BY kontinent LIMIT $start, $anzahl_pro_seite");

} elseif($sortieren == "Land") {

$ergebnis = $mysqli -> query("SELECT * FROM sender ORDER BY land LIMIT $start, $anzahl_pro_seite");

}

?>

Frage 2

Wie muss die Fall – Entscheidung formuliert werden?

Natürlich soll man Radiosender über ein Eingabeformular finden können. Auch das funktioniert. Allerdings möchte ich, wenn es keinen Sender mit dem entsprechenden Namen gibt, das ein Text wie z. B. "Leider kein Sender mit diesem Namen zu finden" erscheint. Dafür habe ich in der Fall – Entscheidung folgende 2 Dinge ausprobiert:

if($zeile == !array()) {

echo "Leider gab es keinen Sender mit dem Namen";

}

Das klappt nicht.

if($zeile == false) {

echo "Leider gab es keinen Sender mit dem Namen";

}

Das klappt auch nicht.

if($zeile == null) {

echo "Leider gab es keinen Sender mit dem Namen";

}

War auch 'ne Nullnummer :)

Hier ist der komplette Code dazu:

<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<label>Sendername eingeben:</label><br />

<input type="text" name="suchbegriff"/><br /><br />

<input type="submit" name="gesendet"/>

</form>

<?php

if(isset($_POST['gesendet'])) {

$suchbegriff = htmlspecialchars($_POST['suchbegriff']);

echo $suchbegriff . "<br />";

$db = mysqli_connect("localhost", "root");

mysqli_set_charset($db, "utf8");

mysqli_select_db($db, "radio2");

$sql = "SELECT * FROM sender WHERE sendername LIKE '%$suchbegriff%' ";

$erg = mysqli_query($db, $sql);

while($zeile = mysqli_fetch_assoc($erg)) {

echo $zeile['sendername'] . " ". $zeile['kontinent'] ." ". $zeile['land'] . " ". $zeile['ort'] . " ". $zeile['genre'] . " ". $zeile['streamurl'] . "<br /><br />" ;

}

if($zeile == !array()) {

echo "Leider gab es keinen Sender mit dem Namen";

}

}

?>

</body>

Danke für's lesen.

Computer, programmieren, MySQL, PHP
PHP Error durch require()?

Hi, ich raff grad gar nix mehr, ich hab eine PHP Klasse dbConnection, in der ich mit require ein php File (settings.php) einbinde. Das einbinden funktioniert auch, nur binde ich innerhalb von settings.php ein weiteres php File ein, functions.php. Das wiederrum funktioniert nicht. Ich weiß, meine Erklärung ist bissle kompliziert, daher hier der Code:

dbConnection.php

<?php

try {
    require dirname($_SERVER["DOCUMENT_ROOT"]) . "/php/settings/settings.php";
} catch (Throwable|mysqli_sql_exception $exception) {
    error_log(date("d.m.Y, H:m:s") . " | " . $exception . "\n\n", 3, "/hp/cz/aa/gf/www/domains/domain.com/php/logs/php-errors.log");
    header("location: /error/?error=500");
    exit();
}

class dbConnection
{
...
}

settings.php

<?php

try {
    date_default_timezone_set("Europe/Berlin");
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    require dirname($_SERVER["DOCUMENT_ROOT"]) . "/php/functions/functions.php";
} catch (Throwable|mysqli_sql_exception $exception) {
    error_log(date("d.m.Y, H:m:s") . " | " . $exception . "\n\n", 3, "/hp/cz/aa/gf/www/domains/domain.com/php/logs/php-errors.log");
    header("location: /error/?error=500");
    exit();
}

hier die relevanten Pfade:

domain.com/php/classes/dbConnection.php

domain.com/php/settings/settings.php

domain.com/php/functions/functions.php

Der Fehler muss an der in settings.php Datei liegen, da ich schon einmal vor und nach dem require in settings.php ein die("hier"); gemacht habe und dabei als das die("hier"); VOR dem

require dirname($_SERVER["DOCUMENT_ROOT"]) . "/php/functions/functions.php";

"hier" ausgegeben hat, und NACH dem

require dirname($_SERVER["DOCUMENT_ROOT"]) . "/php/functions/functions.php";

mir angezeigt wurde, dass diese Seite nicht funktionieren würde. Komisch ist auch, dass der Fehler nicht aufgefangen wird, daher bin ich gerade etwas ratlos. Hoffe meine Frage ist verständlich, ansonsten gerne einfach nachfragen :)

Computer, Internet, HTML, Webseite, programmieren, MySQL, PHP
Verbindung zur Datenbank checken - PHP?

Hi, ich hab folgende Funktion in einer Klasse dbConenction:

private mixed $connection;

public function __construct()
{
    return $this->connect();
}

private function connect()
{
    try {
        $host = "localhost";
        $username = "USER_NAME";
        $pwd = "PWD";
        $database = "DB_NAME";
        $this->connection = new mysqli($host, $username, $pwd, $database);

        if ($this->connection->connect_error) {
            throw new Exception("Connection to database failed. | " . $this->connection->connect_error);
        }
        return $this->connection;
    } catch (Exception $exception) {
        $this->connection = null;
        databaseErrorHandling($exception);
        return null;
    }
}

Die Verbindung zur Datenbank funktioniert auch, ich kann Queries ausführen. Doch mein Problem, wenn ich zum Beispiel den Username für die Datenbank ändere, soll eigentlich durch

if ($this->connection->connect_error)

eine Exception geworfen werden, weil die Verbindung ja nicht aufgebaut werden kann, da der Username falsch ist. Das Gleiche funktioniert auch nicht, wenn ich zum Beispiel das Passwort ändere. Hab in den Docs von PHP nachgelesen und dort haben die das genauso gemacht...

$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

Jemand eine Idee, warum das nicht funktioniert, so wie es funktionieren sollte :D, oder Verbesserungsvorschläge?

Danke für jede Hilfe!!!

Computer, SQL, HTML, Webseite, programmieren, Datenbank, MySQL, PHP
Javascript nach Button Klick auf andere Webseite leiten?

Moin!

Ich hab folgende Frage: Wie kann ich es realisieren, dass, wenn ich auf den Success Button klicke, ich dann auf eine andere Seite geleitet werde? Der Link dahin ist auch ein Teil dynamischer PHP Code. Ihr werdet es sehen :)

Hier mein Code:

"use strict";!function(){const n=document.querySelector(".suspend-user"),t=(n&&(n.onclick=function(){Swal.fire({title:"Bist du sicher?",text:"Du kannst diesen Benutzer nicht wiederherstellen!",icon:"warning",showCancelButton:!0,confirmButtonText:"Fortsetzen",cancelButtonText:"Abbrechen",customClass:{confirmButton:"btn btn-primary me-2",cancelButton:"btn btn-label-secondary", text:"Abrechen"},buttonsStyling:!1}).then(function(n){n.value?Swal.fire({icon:"success",title:"Benutzer gelöscht!",text:"Der Benutzer wurde gelöscht.",customClass:{confirmButton:"btn btn-success"}}):n.dismiss===Swal.DismissReason.cancel&&Swal.fire({title:"Vorgang abgebrochen",text:"Der Benutzer wurde nicht gelöscht.",icon:"error",customClass:{confirmButton:"btn btn-success"}})})}),document.querySelectorAll(".cancel-subscription"));t&&t.forEach(n=>{n.onclick=function(){Swal.fire({text:"Are you sure you would like to cancel your subscription?",icon:"warning",showCancelButton:!0,confirmButtonText:"Yes",customClass:{confirmButton:"btn btn-primary me-2",cancelButton:"btn btn-label-secondary"},buttonsStyling:!1}).then(function(n){n.value?Swal.fire({icon:"success",title:"Unsubscribed!",text:"Your subscription cancelled successfully.",customClass:{confirmButton:"btn btn-success"}}):n.dismiss===Swal.DismissReason.cancel&&Swal.fire({title:"Cancelled",text:"Unsubscription Cancelled!!",icon:"error",customClass:{confirmButton:"btn btn-success"}})})}})}();

Und ich möchte gern auf folgende Seite weitergeleitet werden:

index.php?page=deleteUser&&delete_id=<?=$user_data['user_id']?>

Könntet ihr mir hier behilflich sein? Wenn ich auf den Button "Fortsetzen" klicke erscheint noch eine Bestätigungsnachricht, wenn man dann auf "OK" klickt, soll der Redirect ausgeführt werden.

Danke euch im Vorraus!

HTML, programmieren, JavaScript, PHP, Technologie, Webentwicklung
Xampp website nicht über iphone erreichbar?

Habe in den browser meine ip adresse eingegeben

und bin mit dem selben Router verbunden ( aber der pc über das strom mit einem lan kabel )

xampp apache webserver läuft.

habe gehört das es möglich sein soll aber es funktioniert nicht.

Auch als ich http:// + meine ip eingegeben habe erschien irgendwas mit pdf konnte nicht geladen werden

wie mach ich das ich die seite jetzt aufrufen kann über mein handy ?

(und zweite frage : wie mache ich das mit dem router weiterleiten falls jemand von ausserhalb die seite besuchen will.

Kenne plattformen auf der man das einfach hochladen kann aber möchte es halt so machen zum lernen.)

Computer, Internet, Technik, Webseite, JavaScript, Informatik, IP-Adresse, PHP, Router, Technologie, xampp

Meistgelesene Fragen zum Thema PHP