Announcement

Collapse
No announcement yet.

Registrierung überprüfen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Registrierung überprüfen

    Hallo,
    ich habe ein Problem mit meinem Registierungs script. Und zwar soll er überprüfen, ob in der Datenbank bereits den Benutzernamen gibt oder die Email Adresse bereits verwendet wird.

    PHP Code:
    $query "SELECT * FROM User";
    $result mysql_query($query,$link) or die(mysql_error());
    $row mysql_fetch_array($result);
    if(
    $_POST['login'] == $row(Nick))

        echo 
    'Benutzername existiert bereits!';
    }
        elseif (
    $_POST['email'] == $row(email)) 
                {
        echo 
    'Email Adresse wird bereits benutzt!';
                }
        elseif (
    $_POST['pw'] != $_POST['pw2']) 
                {
             echo 
    'Passwörter stimmen nicht überein!';
                }        
        else
                { 
            echo 
    'Alles in Ordnung!';
                }

    Der Script funktioniert prima wenn in der Datenbank nur ein Eintrag ist. Wenn aber sich schon zwei Benutzer angemeldet haben, überprüft er immer nur den Ersten eintrag.
    Wie schaffe ich es, dass er die komplette Datenbank überprüft?
    Ich mochte noch nie diese Array wirtschaft da oben ^^


    MFG

  • #2
    Hallo,
    Originally posted by Frittenfett View Post
    ...Der Script funktioniert prima wenn in der Datenbank nur ein Eintrag ist.
    Das es überhaupt funktioniert würde ich jetzt mal in Zweifel ziehen.
    PHP Code:
    $row mysql_fetch_array($result); 
    Da mysql_fetch_array() ein Array zurückliefert, sollte das Konstrukt
    PHP Code:
    $row(Nick
    (was eigentlich der Versuch ist, die variable Funktion $row mit der Konstante Nick als Parameter aufzurufen) mit einem Laufzeitfehler quitiert werden.

    Dann selektierst du die gesamte Liste der User, rufst jedoch nur den Ersten ab und vergleichst diesen mit den POST-Parametern. Statt hier jetzt auf die Idee zu kommen, sämtliche Einträge aus der Abfrage in einer PHP-Schleife zu überprüfen, solltest du das bereits in der DB-Abfrage erledigen.
    Und nur mal so als Anmerkung: Es sollten immer nur die DB-Felder selektiert werden, die auch tatsächlich gebraucht werden - also SELECT * ist zu vermeiden. Und DB-Abfragen sollten nur dann ausgeführt werden, wenn sie notwendig sind. Wenn also bereits pw != pw2 ist, muß der Rest eigentlich nicht mehr überprüft werden.
    PHP Code:
    $query =
      
    'SELECT email, Nick
       FROM User
       WHERE email = \''
    .mysql_real_escape_string($_POST['email']).'\'
         OR  Nick  = \''
    .mysql_real_escape_string($_POST['login']).'\'';

    /* DB-Abfrage nur, wenn nicht bereits pw != pw2 */
    if ($_POST['pw'] != $_POST['pw2']) {
      echo 
    'Passwörter stimmen nicht überein!';
    }
    else {
      
    $result mysql_query($query$link) or die(mysql_error());
      
    $row    mysql_fetch_array($result);

      if (
    $row === false) {
        
    /* Es wurde kein DS gefunden -> Alles ok */
        
    echo 'Alles in Ordnung!';
      }
      else {
        if (
    $_POST['login'] == $row['Nick']) {
          echo 
    'Benutzername existiert bereits!';
        }
        if (
    $_POST['email'] == $row['email']) {
          echo 
    'Email Adresse wird bereits benutzt!';
        }
      }

    Hinweis: Alle Parameter die von "Aussen" stammen, also Inhalte von $_POST, $_GET, $_COOKIE, etc. sollten vor ihrer Verwendung validiert, maskiert und ggfs. bereinigt werden.

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment

    Working...
    X