PHP-MySQL Undefined index

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • PHP-MySQL Undefined index

      Hey Leute! Ich bin derzeit kräftig PHP am lernen und habe mir als Projekt im Stil von "Learning by Doing" vorgenommen, ein Social Network zu programmieren. Dieses Projekt werde ich in meiner Schule vorstellen und kann somit meine Jahresnote verbessern.

      Aller Anfang ist schwer und somit bring ich auch schon die ersten Probleme mit.
      PHP an sich ist ja nicht schwierig, die Befehle sind schnell zu lernen und die Syntax ist auch nicht kompliziert.
      Das einzige was mich stört: Es gibt zwar Fehlermeldungen, aber keine "Beschreibung" wie man dieses Problem beheben kann.

      Nun gut.

      Ich bringe euch heute ein Fehler mit der wie Folgt aussieht:

      PHP-Quellcode

      1. Notice: Undefined index: username in C:\xampp\htdocs\social\index.php on line 21
      2. Notice: Undefined index: password in C:\xampp\htdocs\social\index.php on line 22
      3. Notice: Undefined index: password2 in C:\xampp\htdocs\social\index.php on line 23



      Der Inhalt der Datei "index.php" sieht wie Folgt aus:


      PHP-Quellcode

      1. <?php include_once ("mysqlconnect.php");
      2. $username = $_POST["username"];
      3. $password = $_POST["password"];
      4. $password2 = $_POST["password2"];
      5. db_connect();
      6. if($password != $password2 OR $username == "" OR $password == "")
      7. {
      8. echo "Eingabefehler. Bitte alle Felder vollständig ausfüllen.";
      9. exit;
      10. }
      11. //$password = md5($password);
      12. $result = mysql_query("SELECT * FROM user WHERE username LIKE '$username'");
      13. $menge = mysql_num_rows($result);
      14. if($menge == 0)
      15. {
      16. $eintrag = mysql_query("INSERT INTO user (username, password) VALUES ('$username', '$password')");
      17. if($eintrag == true)
      18. {
      19. echo "Benutzername <b>$username</b> wurde erstellt."; } else { echo "Fehler beim Speichern des Benutzernames."; }
      20. }
      21. else { echo "Benutzername ist schon vorhanden. Bitte wählen Sie einen anderen."; }?>
      Alles anzeigen




      Ich weiß das man dieses Problem mit der Funktion isset(WERT) beheben kann.
      Jedoch funktioniert dies nicht so, wie ich es mir vorstelle.
      Wenn ich die Funktion isset(WERT) verwende und ich mir einen neuen Benutzer anlegen möchte, dieser Benutzer jedoch schon vorhanden ist, wird der Wert 1 in der Datenbank gespeichert.


      Falls jemand von euch eine Lösung für mich hat, wäre ich ihm sehr dankbar!


      Mit freundlichen Grüßen

      ICH :shocked:


      PS: Ich weiß nicht wieso die Darstellung des PHP-Codes so komisch ist. :(
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Hi,

      dein Problem verstehe ich nicht so ganz. Was meinst du damit, dass der Wert "1" in der Datenbank gespeichert wird?
      1 anstelle des Benutzernamens? Welcher Wert enthält dann $username (Ausgeben mit echo)?

      Grundsätzlich kannst du, wenn du irgendwo einen falschen Wert bekommst, einfach den Weg von der Variable mit Testausgaben zurück verfolgen um zu sehen, ab wann das Programm von deiner Vorstellung abweicht (und wieso).

      Sofern zu Tipps zu deinem Code möchtest (unabhängig von deinem Problem):
      * Um sicher zu gehen, dass du isset richtig nutzt: if (isset($_GET['...'])) {
      * Ich würde "||" statt "OR" nutzen und "&&" statt "AND" (das ist üblicher)
      * Zwei Strings würde ich mit "===" statt "==" vergleichen (wenn eine Variable doch einmal kein String sein sollte ist können sonst komische Situationen rauskommen, z.B. "1H2" == 12 ist true - oder zumindest so ähnlich)
      * Du solltest bei $username noch die Leerzeichen vor- und nach dem Namen entfernen (Funktion trim()), denn sonst ist beispielsweise auch ein Leerzeichen ein gültiger Benutzername
      * Sicher, dass du LIKE in der WHERE Klausel nutzen möchtest? Mit LIKE gibst du ein Suchmuster an, keinen exakten Wert
      * Wenn der Benutzername SQL-Syntax enthält, wird diese direkt ins Query übernommen (SQL-Injection). Um das zu verhindern, musst du gefährliche Zeichen Escapen (Backslash vorstellen), das geht mit der Funktion mysql_real_escape_string()
      * $menge ist Deutsch, $result ist Englisch; schöner wäre es, bei einer Sprache zu bleiben