[PHP] Fehlermeldung, bitte fülle alle Felder aus

  • Hallo liebe Community, liebe Helfer,


    ich habe mir folgendes System überlegt,


    Spieler registriert sich und erhält bestätigungscode


    dieser Bestätigungscode soll dann auf der Aktivierungsseite mit dem dazugehörigen Nutzernamen eingegebn werden.


    Mit dem Benutzernamen, dies ist als Zusatz dessen fals er sich später einloggt und sich dann aktiviert



    Nun zu meinem Problem


    Ich fülle alle Felder aus aber der sagt mir, Bitte fülle alle felder aus.


    Hier mal das Codestück dazu



    also der fehler ist halt dessen dass er nicht in die While Schleife reinkommt
    ich weiß aber leider nicht warum

  • Die Abfrage ob $Benutzer_Name oder $code_post leer sind,solltest du auch NICHT in der Schleife machen. Überleg dir doch mal wie das SQL Kommando aussieht (Z.35), wenn $Benutzer_Name leer ist:

    SQL
    SELECT * FROM User WHERE Benutzername = ''


    Du hast wahrscheinlich keinen Benutzer OHNE Namen (wäre zumindest besser ;) ), hast somit 0 Ergebnisse. Die while-Bedingung (Z.37) wird daher NIE wahr und somit kommst du auch nie zu der Abfrage aus Z.39


    Edit:
    Du bist mit dem o.g. Code übrigens sehr anfällig gegen SQL Injection.

  • Du hast wahrscheinlich keinen Benutzer OHNE Namen (wäre zumindest besser ), hast somit 0 Ergebnisse. Die while-Bedingung (Z.37) wird daher NIE wahr und somit kommst du auch nie zu der Abfrage aus Z.39

    soweit verstanden, heißt ich schreibe die abfrage einfach um und frage ob die gefüllt ist... oder wie?

    Du bist mit dem o.g. Code übrigens sehr anfällig gegen SQL Injection.

    inwieweit anfällig, wie kann man sich besser dagegen schützen?


    Eine Frage noch dabei -> Lieber mit MYSQLi oder nur MYSQL schreiben?





    edit: hast du gesehen dass da die variable drin steht, also der eingegebene benutzername



    Zitat
    PHP
    SELECT * FROM User WHERE Benutzername = ''
  • Die Abfrage ob $Benutzer_Name oder $code_post leer sind, sollte vor das SQL Kommando.


    Die Eingabe des Benutzers filtern. Da findest du selbst hier im Forum genug Hinwese oder über Google.


    MySQLi. Es gibt noch PDO, habe ich aber selbst noch nie verwendet. Daher kann ich dir dazu nichts sagen.


    Zitat

    edit: hast du gesehen dass da die variable drin steht, also der eingegebene benutzername


    Überleg dir doch mal wie das SQL Kommando aussieht (Z.35), wenn $Benutzer_Name leer ist:

    SQL
    SELECT * FROM User WHERE Benutzername = '' -- $Benutzer_Name ist leer!


    //Edit:
    Die form musst du auch noch schließen. Dann mach auch mal ein print_r($_POST) über Zeile 29.

    2 Mal editiert, zuletzt von Goldkiller ()

  • Grundsätzlich als Tipp für Datenbankverbindungen wäre PDO auch noch eine Option. PDO Unterstütz in diesem Sinne mehr verschiedene Datenbanktreiber als mysqli*.


    Was mir auffällt:
    - Die PHP-Session wird doppelt gestartet ( Zeile 2 & 28 ) 1 mal genügt.
    - Wo setzt du die $_SESSION["Benutzername"] Variable?


    Hier mein Lösungsvorschlag dazu:
    #mce_temp_url#

  • - Wo setzt du die $_SESSION["Benutzername"] Variable?



    die wird in der registration.php bzw login.php gesetzt


    sieht dann so aus




    das doppelte setzen der session hab ich rausgenommen :)

  • Okay das erklärt dann schon mehr. Jedenfalls schau dir mal meinen Lösungsweg an. Du kannst das jetzt auch wieder zurück zu mysql oder mysqli* umschreiben, aber so in diese Richtung sollte es funktionieren


    das umschreiben würde ich ja gerne tun aber ich kann deinem weg per PDO nicht ganz folgen...


    vlt kannst du mir doch auf die MYSQL Variante helfen...




    Stimmt der rest denn? mit der übergabe der Session etc