Hi,
Ich bastel mir gerade ein Registrierungsscript, hab da wohl ein paar Fehler gemacht, wobei ich die nicht wirklich lösen kann.
Also Die Überprüfen funktionieren alle und er schreibt mir, wenn alles richtig ausgefüllt wurde, auch neue Datensätze in die Datenbank. Die Fehlermeldungen "spielen aber verrückt".
So hier die php Datei (Sieht zwar im ersten Moment bissl viel aus, wenn man die Kommentar aber weglässt egeintlich wirklich wenig;-))
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input class="input" type="text" name="username" value="Username" /><br />
<input class="input" type="text" name="password" value="Password" /><br />
<input class="input" type="text" name="password2" value="Password wiederholen" /><br />
<input class="input" type="text" name="email" value="EMail" /><br />
<!--Button-->
<input id="buttunlogin" name="Login" type="submit" value="Registrieren" /><input id="buttunreset" name="Reset" type="reset" value="Zurücksetzen" />
</form>
<?php
//---Mysql_connect enthält den Verbindungsaufbau. vairbalen.php enthält verschiedene Variablen, z.B.: Fehlermeldungen und auch die Daten für den MySQL_Verbindungsaufbau
include_once("variablen.php");
include_once("mysql_connect.php");
//---Daten vom Eingabeformular entgegen nehmen
$username = $_POST['username'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$email = $_POST['email'];
/*
*
*
* Der Wert der Variable status wird beim registrieren in die Tabelle Status eingetragen. Der Variable enthält den Zeichenstring "deaktiviert".
* Sobald der User den Aktivierungslink
* bestätigt, wird dieser Wert in aktiviert umgewandelt.
*
*
*/
$status = "deaktiviert";
/*
*
*
* Nun wird überprüft, ob die Variablen, die vom Formular entgegen genommen werden, auch Werte enthalten.
* Sollte ein Feld nicht ausgefüllt worden sein, wird das script abgebrochen und eine Fehlermeldung ausgegeben.
* Die Variable $fehler_Felder enthält den Wert "Bitte füllen Sie alle Felder aus! Und es wird überprüft ob
* Passwort Eins mit Passwort Zwei übereinstimmt, wenn nicht, wird die Variable $fehler_password ausgegeben"
*
*
*/
if ($password != $password2 && $username = "" && $password = "" && $password2 = "" && $email = "") {
echo "$fehler_Felder";
exit();
}
//---Password wird mittels md5 verschlüsselt
$password = md5($password);
//---Hiermit wird abgefragt, wie viele Datensätze gefunden werden, mit dem angegebenden Username.
$result = mysql_query("SELECT id FROM users WHERE username LIKE '$username'");
$anzahl = mysql_num_rows($result);
//---Nun wird überprüft, wie oft der Username in der Variable $anzahl vorkommt. Wenn nicht, wird der User in die Datenbank eingetragen.
if ($anzahl == 0) {
$eintrag = "INSERT INTO users (username, password, email, status) VALUES ('$username', '$password', '$email', '$status')";
$ergebnis = mysql_query($eintrag);
//---Mit is_resource wir geprüft, ob die variable $ergebnis eine resource (in dem Fall object) ist
if ($ergebnis == true) {
//---Die folgende Variable gibt eine Positive Meldung (Benutzerkonto wurde erstellt) aus.
echo "$meldung_registrierung";
mail($empfaenger, $betreff, $from, $text);
}
else
{
//---Die folgende Variable gibt eine Negative Meldung (Benutzerkonto konnte nicht erstellt werden) aus.
echo "$fehler_eintrag";
}
}
else //---Falls der Benutzname schon existiert
{
echo "$fehler_benutzername";
}
?>
Alles anzeigen
Also die Überprüfung, ob alles Felder ausgefüllt worden sind klappt. Passwort vergleichen funktioniert auch und die überprüfung, ob der Username schon in der Tabelle vorhanden ist funktioniert auch.
Die Fehlermeldungen sich aber irgendwie durcheinander
Die Fehlermeldungen speicher ich in Variablen ab, diese Lade ich am anfang des scriptes rein. Jetzt kommen die Fehlermeldungen die derzeit im Script ausgegeben werden sollten:
<?php
$meldung_registrierung = "Ihr Benutzerkonto wurde erfolgreich erstellt! Bitte steigen sie bei ihrem Emailkonto ($email) ein und aktivieren sie ihr Benutzerkonto.";
$fehler_Felder = "Bitte füllen Sie alle Felder korrekt aus!";
$fehler_eintrag = "Dein Benutzerkonto konnte nicht erstellt werden";
$fehler_benutzername = "Der Benutzname existiert bereits.";
?>
Okay, also, hier kann man sich das Ganze ansehen und testen: http://www.game.nicolas-pecher.com/test.php
Wenn man die Seite nur aufruft kommt schon die fehlermeldung - Der Benutzname existiert bereits.
Und wenn man 2 unterschiedliche PWs eingibt bleibt die - Der Benutzname existiert bereits. - Fehlermeldung. Dabei müsste aber kommen: "Bitte füllen Sie alle Felder korrekt aus!"
Also versteht ihr was ich mein? Die Überprüfung klappt zwar und er tragt bei Fehlerhaften ausfüllen des Formulars auch nix in die DB, aber Fehlermeldungen stimmen nicht
Wäre euch sehr dankbar wenn ihr mir wiedermal weiterhelfen könntet!
Grüße
Nico