Problem mit Benutzerregistrierung

Benihipe

Grünschnabel
Hallo ich habe ein script zum eintragen von personen in meine datenbank jedoch habe ich das problem das er nicht prüft ob der anzulegende benutzer schon vorhanden ist.
könnt ihr mir sagen wie ich das Problem in dne Griff kriege ?

PHP:
<?php session_start();

/**
 * Passwort-Kontrolle
 * Neuen Benutzer in Datenbank eintragen
 *
 */

if ( !( $_POST['passwort'] === $_POST['passwort2'] ) ) {
  $_SESSION['pw_error'] = 'Die Passworte waren nicht identisch!';
  header( 'Location: pw_new_user2.php' );
  exit();
}
$pw = trim( $_POST['passwort'], ' ' );
if ( $pw == '' ) {
  $_SESSION['pw_error'] = 'Das Passwort darf nicht leer sein!';
  header( 'Location: pw_new_user2.php' );
  exit();
}
if ( strlen( $pw ) < 6 ) {
  $_SESSION['pw_error'] = 'Das Passwort muss mindestens 6 Zeichen lang sein!';
  header( 'Location: pw_new_user2.php' );
  exit();
}
if ( !( $pw === $_POST['passwort'] ) ) {
  $_SESSION['pw_error'] = 'Das Passwort darf nicht mit Leerzeichen beginnen oder enden!';
  header( 'Location: pw_new_user2.php' );
  exit();
}

include( 'db_connect.inc.php' );


$_SESSION['benutzer'] = $_POST['benutzer'];
$sql = 'INSERT INTO benutzer ( name, passwort )
               VALUES (\''.$_SESSION['benutzer'].'\', \''.md5( $_POST['passwort'] ).'\')';
db_query( 'Web', $sql );

 

// Kontrolle auf korrektes Einfügen
$sql1 = 'SELECT name FROM benutzer WHERE name=\''.$_SESSION['benutzer'].'\'';
$result = db_query( 'Web', $sql1 );
if ( !$result ) {
  $_SESSION['mitteilung'] = 'Das Anlegen des neuen Benutzers '.$_SESSION['benutzer']
      .' ist fehlgeschlagen.<br />$sql='.$sql;
} else {
  $_SESSION['mitteilung'] = 'Der Benutzer '.$_SESSION['benutzer'].' wurde in die
    Datenbank eingetragen.<br />Bitte loggen Sie sich mit dem Passwort ein.';
  header( 'Location:z-indexlogin.php' );
}

?>
 
Willkommen auf Tutorials.de :)
Ich möchte dich zu Begin gleich einmal auf die Forenregeln hinweisen, welche unter anderem besagen, dass hier auf die deutsche Rechtschreibung geachtet werden soll.

Zu deinem Problem:
Sicher, dass du uns das richtige Script gepostet hast? Dein Codeausschnitt prüft nämlich (auf sehr umständliche Art), ob ein Benutzer mit gegebenen Passwort in der Datenbank eingetragen ist.
Den Query kann man schöner realisieren (Stichwort: Bedingungen mit WHERE). Vielleicht solltest du zum besseren Verständiss erst noch ein paar Tutorials durcharbeiten, wie z.B.: http://tut.php-quake.net/de/mysql.html
 
Ich kenn dein db_query() nicht und weiss darum auch nicht was es macht.
Wenn du einen unique-Index auf dem Feld benutzer.name hast, wird ein doppelter Eintrag bereits unterbunden.
Mit einem "INSERT ... ON DUPLICATE KEY UPDATE" kannst du es MySQL überlassen ob der Datensatz neu eingetragen werden muss, oder ob der bestehende angepasst wird
http://dev.mysql.com/doc/refman/5.1/de/insert-on-duplicate.html

Ansonsten kannst du das $sql1 vor dem insert auch ausführen und das resultat auswerten. Dann weisst du ob der Benutzer bereits existiert
 
Zurück