46356
25.08.2007, aktualisiert am 26.08.2007
5599
7
0
PHP Script, der Zweck nicht erfüllt
Hallo
Ich habe einen PHP Script programmiert, der auch ganz gut läuft.
Es ist ein Registrierungs Script:
Zwar zeigt es mir das gewünschte Ergebnis an wenn ich eine Verbindung mit der MySQL
Tabelle herstelle, doch der User wird trotztdem registriert...
Der Sinn wäre jedoch: Falls der nickname bereits verwendet werden würde, sollte er nicht angemeldet werden!
Hier ein Ausschnitt:
Vielen Dank, Alex
Ich habe einen PHP Script programmiert, der auch ganz gut läuft.
Es ist ein Registrierungs Script:
Zwar zeigt es mir das gewünschte Ergebnis an wenn ich eine Verbindung mit der MySQL
Tabelle herstelle, doch der User wird trotztdem registriert...
Der Sinn wäre jedoch: Falls der nickname bereits verwendet werden würde, sollte er nicht angemeldet werden!
Hier ein Ausschnitt:
}elseif(!isset($_POST['name']) || $_POST['name'] == ""){
echo '<p align="center"><font face="Verdana" size="2px">Du hast deinen Vornamen vergessen.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zurück</a></p>';
}elseif(!isset($_POST['name2']) || $_POST['name2'] == ""){
echo '<p align="center"><font face="Verdana" size="2px">Du hast deinen Nachnamen vergessen.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zurück</a></p>';
}elseif(!isset($_POST['birthday']) || $_POST['birthday'] == ""){
echo '<p align="center"><font face="Verdana" size="2px">Du hast deine Geburtsdatum vergessen.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zurück</a></p>';
}elseif(!isset($_POST['adresse']) || $_POST['adresse'] == ""){
echo '<p align="center"><font face="Verdana" size="2px">Du hast deine Adresse vergessen.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zurück</a></p>';
}elseif(!isset($_POST['ort']) || $_POST['ort'] == ""){
echo '<p align="center"><font face="Verdana" size="2px">Du hast keinen Ort angegeben.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zurück</a></p>';
}elseif(!isset($_POST['land']) || $_POST['land'] == ""){
echo '<p align="center"><font face="Verdana" size="2px">Du hast dein Land vergessen.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zurück</a></p>';
}elseif(!isset($_POST['bundesland']) || $_POST['bundesland'] == ""){
echo '<p align="center"><font face="Verdana" size="2px">Du hast dein Bundesland vergessen.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zurück</a></p>';
}elseif(!isset($_POST['telefonnummer']) || $_POST['telefonnummer'] == ""){
echo '<p align="center"><font face="Verdana" size="2px">Du hast keine Telefonnummer angegeben.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zurück</a></p>';
}elseif(!isset($_POST['mail']) || $_POST['mail'] == ""){
echo '<p align="center"><font face="Verdana" size="2px">Du hast deine E-Mail Adresse vergessen.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zurück</a></p>';
}elseif(!isset($_POST['nickname']) || $_POST['nickname'] == ""){
echo '<p align="center"><font face="Verdana" size="2px">Du hast deinen Nicknamen vergessen.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zurück</a></p>';
}elseif(!isset($_POST['password']) || $_POST['password'] == ""){
echo '<p align="center"><font face="Verdana" size="2px">Du hast kein Passwort gewählt.<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zurück</a></p>';
}elseif(!isset($_POST['password2']) || $_POST['password2'] == ""){
echo '<p align="center"><font face="Verdana" size="2px">Du hast das Passwort nicht noch einmal eingegeben!<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zurück</a></p>';
}elseif($_POST['password'] != $_POST['password2']) {
echo '<form action="registration.php" method="post">';
echo '<p align="center">Die Passwörter stimmen nicht überein!<br><br>';
echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
echo '<input type="submit" name="zurueck" value="Zurück"></p>';
echo '</form>';
// Captcha überprüfen
}elseif(!isset($_POST['code']) == $_SESSION['code'])
{
echo "<font face='Verdana' size='2px'>Du hast die Sicherheitsprüfung nicht bestanden!! <a href=javascript:history.back(-1) onFocus=this.blur()>Zurück</a>";
// Session löschen
unset($_SESSION['captcha_code']);
}else
{
$query = @mysql_query("SELECT user FROM users WHERE user = '".$_POST['username']."'");
$result = @mysql_fetch_array($query);
if($_POST['nick'] == $result['nick'])
{
echo '<p align="center"><font face="Verdana" size="2px">Dieser Nick-Name wird bereits verwendet!<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zurück</a></p>';
}
if($_POST['mail'] == $result['mail'])
{
echo '<p align="center">Diese E-Mail Adresse wird bereits verwendetdet!<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zurück</a></p>';
die;
}
else
{
$name = $_POST['name'];
$name2 = $_POST['name2'];
$birt = $_POST['birthday'];
$adresse = $_POST['adresse'];
$ort = $_POST['ort'];
$land = $_POST['land'];
$bundesland = $_POST['bundesland'];
$tele = $_POST['telefonnummer'];
$mail = $_POST['mail'];
$nick = $_POST['nickname'];
$pass = md5($_POST['password']);
if($insert = @mysql_query("INSERT INTO users VALUES('','$name','$name2','$birt','$adresse','$ort','$land','$bundesland','$tele','$mail','$nick','$pass')")) {
echo '<p align="center">Der neue Benutzer wurde erfolgreich angelegt!<br><br><a href="/neu_fertig/menu.php">Zum Menü</a></p>';
}else{
echo '<p align="center">Beim Anlegen des neuen Benutzers trat leider ein Fehler auf!<br><br><a href=javascript:history.back(-1) onFocus=this.blur()>Zurück</a></p>';
}
}
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 67063
Url: https://administrator.de/contentid/67063
Ausgedruckt am: 23.11.2024 um 05:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo,
das Problem liegt wahrscheinlich an den nachfolgenden Zeilen:
Es wird bei der DB Abfrage lediglich der "user" selektiert, bei dem in "user" der übergeben Name steht.
Jedoch fragst du danach auf "$result['nick']" ab. Somit muss entweder das "Nickname-Feld" mit in die SQL Abfrage:
oder Du musst dem User in der SELECT ABFRAGE den entsprechenden Namen geben:
Das Problem tritt übrigens bei der MAIL Abfrage auch noch mal auf ;)
Gruß Björn
das Problem liegt wahrscheinlich an den nachfolgenden Zeilen:
$query = @mysql_query("SELECT user
> FROM users WHERE user =
> '".$_POST['username']."'");
> $result = @mysql_fetch_array($query);
> if($_POST['nick'] ==
> $result['nick'])
> {
Es wird bei der DB Abfrage lediglich der "user" selektiert, bei dem in "user" der übergeben Name steht.
Jedoch fragst du danach auf "$result['nick']" ab. Somit muss entweder das "Nickname-Feld" mit in die SQL Abfrage:
SELECT user, nick FROM users WHERE user = ...
oder Du musst dem User in der SELECT ABFRAGE den entsprechenden Namen geben:
SELECT user as nick FROM users WHERE user= ....
Das Problem tritt übrigens bei der MAIL Abfrage auch noch mal auf ;)
Gruß Björn
Hi Alex,
bei dem letzten von dir geposteten Script liegt das Problem mit der SQL Abfrage vor:
wenn Du verhindern willst, dass der Nickname mehrmals verwendet wird, so musst Du dies auch aus der entsprechenden Datenbanktabelle abfragen.
Vergleiche mal die verwendeten Post-Felder, die "Select Anweisungen " vor der IF Abfrage und die entsprechende "Insert Anweisung" am Ende.
Diese sind alle 3 Unterschiedlich ;)
Lass dir mit var_dump($_POST); mal die übergebenen Variablen ausgeben, eventuell hilft dies weiter.
Gruß
Björn
bei dem letzten von dir geposteten Script liegt das Problem mit der SQL Abfrage vor:
$query = @mysql_query("SELECT user FROM users WHERE user = '".$_POST['username']."'");
$result = @mysql_fetch_array($query);
if($_POST['nick'] == $result['nick'])
{
echo '<p align="center"><font face="Verdana" size="2px">Dieser Nick-Name wird bereits >verwendet!<br><br><a href=javascript:history.back(-1) >onFocus=this.blur()>Zurück</a></p>';
}
##red|if($_POST['mail'] == $result['mail'])##
wenn Du verhindern willst, dass der Nickname mehrmals verwendet wird, so musst Du dies auch aus der entsprechenden Datenbanktabelle abfragen.
Vergleiche mal die verwendeten Post-Felder, die "Select Anweisungen " vor der IF Abfrage und die entsprechende "Insert Anweisung" am Ende.
Diese sind alle 3 Unterschiedlich ;)
Lass dir mit var_dump($_POST); mal die übergebenen Variablen ausgeben, eventuell hilft dies weiter.
Gruß
Björn