Fehler beim anmelde script ?!
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anlegen
anmelden
bedingung
benutzer
code
dummer fehler
fehler
gut danke
login
meldung
mitglied
not
null
schnelle antwort
schnelle hilfe
set
tabelle
url
verbindung
wiederholen
-
Hi
ich hab nen Anmeldescript gebastelt...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link rel="shortcut icon" type="image/x-icon" href="Bilder/link-icon.png" width="32px" height="32px" /> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> <title>DarkFighter</title> <STYLE type="text/css"> </STYLE> </head> <body id=body> <ul id=Box> <img src="Bilder/Balken2.jpg" style="width:256px; height:32px; position:absolute; left:0px;"> <?php if(!isset($_POST['submit'])) { ?> <form action="<?php $PHP_SELF ?>" method="post"> <table style="position:absolute; top:45px; left:1px; color:#9d9d9d;"> <tr> <td>Benutzername*</td> <td><input name="username" type="text" class="text"></td> </tr> <tr> <td>Passwort*</td> <td><input name="password" type="password" class="text"></td> </tr> <tr> <td>Passwort wiederholen*</td> <td><input name="password2" type="password" class="text"></td> </tr> <tr> <td>E-Mail*</td> <td><input name="mail" type="text" class="text"></td> </tr> <tr> <td>ICQ</td> <td><input name="icq" type="text" class="text"></td> </tr> <tr> <td>MSN</td> <td><input name="MSN" type="text" class="text"></td> </tr> <tr> <td><input name="submit" value="anlegen" class="button" type="submit"></td> </tr> </table> </form> <br> <?php }elseif(!isset($_POST['username']) || $_POST['username'] == ""){ echo '<p id="Error">Bitte gib noch einen Username ein!<br><a href="anmelden.php">Zurück</a></p>'; }elseif(!isset($_POST['mail']) || $_POST['mail'] == ""){ echo '<p id="Error">Bitte Gib eine E-Mail Adresse ein.<br><a href="anmelden.php">Zurück</a></p>'; }elseif(!isset($_POST['password']) || $_POST['password'] == "") { echo '<p id="Error">Gib bitte ein Passwort ein.<br><a href="anmelden.php">Zurück</a></p>'; }elseif($_POST['password'] != $_POST['password2']) { echo '<p id="Error">Die Passwöter stimmen nicht überein.<br><a href="anmelden.php">Zurück</a></p>'; }else{ $username = $_POST['username']; $icq = $_POST['icq']; $MSN = $_POST['MSN']; $pass = $_POST['password2']; $Mail = $_POST['mail']; $Member = @mysql_query("SELECT * FROM Member WHERE toribashname = '$username'"); if (mysql_num_rows($Member) < 1) { echo '<p id="Error">Du bist Leider kein Mitglied in DarkFighter.<br><a href="?URL=anmelden.php">Zurück</a>'; die; }else{ if($insert = @mysql_query("INSERT INTO user SET nickname = '$username', passwort = '$pass', mail = '$Mail'")) { echo '<p id="Error">Der neue Benutzer wurde erfolgreich angelegt.<br><a href="index.php">zum Login</a></p>'; }else{ echo '<p id="Error">Beim Anlegen des neuen Benutzers trat leider ein Fehler auf.<br><a href="anmelden.php">Zurück</a></p>'; } } } ?> <img src="Bilder/Balken1.jpg" style="width:257px; height:32px; position:absolute; left:0px; top:280;"> </ul> </body> </html>
und die mysql tabelle
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `lastconnect` varchar(50) NOT NULL, `nickname` varchar(50) NOT NULL, `passwort` varchar(50) NOT NULL, `mail` varchar(50) NOT NULL, `iCQ` varchar(12) NOT NULL, `msn` varchar(50) NOT NULL, `skype` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=19 DEFAULT CHARSET=latin1;
so das man sich nur mit den bedingungen anmelden kann funktioniert soweit schon. aber es kommt immer die meldung
"Beim Anlegen des neuen Benutzers trat leider ein Fehler auf."
kann mir einer von euch helfen?
ich geh ma davon aus das der fehler bei der tabelle liegt weil ich schon ne menge sachen ausprobiert hab.
LG:raff
Beitrag zuletzt geändert: 24.11.2009 21:51:51 von raff -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hast du denn dran gedacht ne Verbindung zur DB herzustellen?
-
ja die steht^^
$Member = @mysql_query("SELECT * FROM Member WHERE toribashname = '$username'"); if (mysql_num_rows($Member) < 1) { echo '<p id="Error">Du bist Leider kein Mitglied in DarkFighter.<br><a href="?URL=anmelden.php">Zurück</a>'; die;
funktioniert ja auch -
Ersetz mal die Zeile
$insert = @mysql_query("INSERT INTO user SET nickname = '$username', passwort = '$pass', mail = '$Mail'"))
durch
$insert= @mysql_query("INSERT INTO user (nickname,passwort,mail) VALUES ('".$username."','".$pass."','".$Mail."')")
Könnte sein, dass es daran liegt.
Beitrag zuletzt geändert: 24.11.2009 21:59:08 von alphara -
danke für die schnelle antwort aber geht leider auch nich
-
Was ich verwirrend finde, ist das $insert=@mysql.... . Hat das irgend einen Sinn, das so zu machen? Sonst lass das insert weg und schreib nur den mysql_query in die if-Verzweigung, also if (@mysql....).
Nebenbei:
raff schrieb: ja die steht^^
$Member = @mysql_query("SELECT * FROM Member WHERE toribashname = '$username'"); if (mysql_num_rows($Member) < 1) { echo '<p id="Error">Du bist Leider kein Mitglied in DarkFighter.<br><a href="?URL=anmelden.php">Zur&uuml;ck</a>'; die;
funktioniert ja auch
Das funktioniert auch, wenn die Verbindung nicht steht. Member ist dann einfach leer und demnach ist num_rows auch <1...
Beitrag zuletzt geändert: 24.11.2009 22:13:03 von alphara -
leider auch nicht )= was ich total koisch finde ist das ich das so schon auf ner andern seite benutzt hab und da hats funktioniert deswegen glaub ich echt das iwas mit der tabelle nicht stimmt
alphara schrieb: Was ich verwirrend finde, ist das $insert=@mysql.... . Hat das irgend einen Sinn, das so zu machen? Sonst lass das insert weg und schreib nur den mysql_query in die if-Verzweigung, also if (@mysql....).
Nebenbei:
raff schrieb: ja die steht^^
$Member = @mysql_query("SELECT * FROM Member WHERE toribashname = '$username'"); if (mysql_num_rows($Member) &lt; 1) { echo '&lt;p id="Error"&gt;Du bist Leider kein Mitglied in DarkFighter.&lt;br&gt;&lt;a href="?URL=anmelden.php"&gt;Zur&amp;uuml;ck&lt;/a&gt;'; die;
funktioniert ja auch
Das funktioniert auch, wenn die Verbindung nicht steht. Member ist dann einfach leer und demnach ist num_rows auch <1...
ja ich weiß aber da soll geprüft werden ob man zu den leuten gehört die sich auf der seite anmelden dürfen und wenn man nen falschen namen eingibt dann bekommt man eine fehlermeldung.
Beitrag zuletzt geändert: 24.11.2009 22:15:37 von raff -
Eines kann man noch machen: lass mal das @ vor den msql_query wech und poste mal die Meldungen, die gebracht werden.
-
dann bekomme ich auch nur die normale
Beim Anlegen des neuen Benutzers trat leider ein Fehler auf. Zurück
meldung -
Also, wenn ich den code teste, dann kommt bei mir immer der folgende Fehler zurück:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in test.php on line 64
Das kann nur bedeuten, dass er keine Verbundung zur DB hat, weil anderfalls bekommt er keinen boolean sondern die resource.
Bist du dir GANZ sicher irgendwo eine Verbindung zur Datenbank hergestellt zu haben? -
http://raff.lima-city.de/DarkFighter/anmelden.php
die steht zu 100% die hab ich nur rausgenommen weil ich die ungerne poste...
das einzige was sein kann ist das die tabelle nen error hat aber ich kenn mich mit mysql nich wirklich aus deswegen weiß ich nich ob das sein kann oder nich. -
Die Tabelle hat keinen error. Die läuft, wenn du sie tatsächlich so erstellt hast, wie du es gepostet hast, mit sicherheit. Das muss entweder an deinem Quelltext (und) oder an der Datenbankverbindung liegen. Sosehr ich mich aber auch bemühe, soetwas wie ein mysql_connect() finde ich da nirgends und includen lässt du auch nix, also wie zum **** kommunizierst du mit der Datenbank?
Ich stell die Frage nochmal, in der Hoffnung, dass du mal ALLE @ entfernst und mal schaust, wass es für meldungen gibt und vlt den 2. query aus dem if nimms und mal so testest: BIST du SICHER, dass die Verbindung zur DB steht? Sonst vergleich den aktuellen Quelltext mal mit dem, aus dem du den Abschnitt hast und such mal nach mysql_connect oder mysqli_connect....
€dit:
nikic schrieb:
Er sagt doch, er habe die Verbindung zum Schutz der Zugangsdaten entfernt...
Sry, hatte das iwie missverstanden...
Beitrag zuletzt geändert: 24.11.2009 22:58:39 von alphara -
Er sagt doch, er habe die Verbindung zum Schutz der Zugangsdaten entfernt...
@Threadersteller: Alle @ entfernen und hinter die MySQL-Queries ein OR die(mysql_error()); -
also wie muss der code dann aussehen?
$Member = @mysql_query("SELECT * FROM Member WHERE toribashname = '$username'");OR die(mysql_error()); if (mysql_num_rows($Member) < 1) { echo '<p id="Error">Du bist Leider kein Mitglied in DarkFighter.<br><a href="?URL=anmelden.php">Zurück</a>'; die; }else{ if($insert = @mysql_query("INSERT INTO user SET nickname = '$username', passwort = '$pass', mail = '$Mail'")OR die(mysql_error()); ) { echo '<p id="Error">Der neue Benutzer wurde erfolgreich angelegt.<br><a href="index.php">zum Login</a></p>'; }else{ echo '<p id="Error">Beim Anlegen des neuen Benutzers trat leider ein Fehler auf.<br><a href="anmelden.php">Zurück</a></p>'; } } } ?>
so?
wenn ja dann bekomm ich den fehler:Parse error: syntax error, unexpected T_LOGICAL_OR in /home/webpages/lima-city/raff/html/DarkFighter/anmelden.php on line 116
was sich für mich nich unbedingt nach nem mysql error anhört. -
So:
$Member = mysql_query("SELECT * FROM Member WHERE toribashname = '$username'") OR die(mysql_error()); if (mysql_num_rows($Member) < 1) { echo '<p id="Error">Du bist Leider kein Mitglied in DarkFighter.<br><a href="?URL=anmelden.php">Zurück</a>'; die; }else{ $insert = mysql_query("INSERT INTO user SET nickname = '$username', passwort = '$pass', mail = '$Mail'") OR die(mysql_error()); if($insert) { echo '<p id="Error">Der neue Benutzer wurde erfolgreich angelegt.<br><a href="index.php">zum Login</a></p>'; }else{ echo '<p id="Error">Beim Anlegen des neuen Benutzers trat leider ein Fehler auf.<br><a href="anmelden.php">Zurück</a></p>'; } } } ?>
-
ahhh sehr gut danke
da hab ich dann die meldung bekommen das die tabelle user nicht existiert. (ein dummer fehler die tabelle heißt User und nicht user^^)
naja gut danke an alle für die schnelle hilfe -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage