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
    Notice: Undefined index: username in C:\xampp\htdocs\social\index.php on line 21
    
    
    Notice: Undefined index: password in C:\xampp\htdocs\social\index.php on line 22
    
    
    Notice: Undefined index: password2 in C:\xampp\htdocs\social\index.php on line 23


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



    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. :(

    [CENTER]

    Battletag: Elecztro#2728[/CENTER]

  • 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

  • Ich werde es mal mit der echo Ausgabe ausprobieren und gucken, wo das Script seine fehler hat.


    Und ja, die 1 wird anstelle des Benutzernamens in die Datenbank eingefügt, sehr ärgerlich.

    Und danke für die Tipps! :)

    [CENTER]

    Battletag: Elecztro#2728[/CENTER]

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!