|
Hilfe!
|
| Titel: mysql_num_rows() expects parameter 1 to be resource |
17.09.2009 17:51 |
|
|
Anmeldungsdatum: 15.08.2007
Beiträge: 2.443
|
Hallo,
Ich werde teilweise gleich verrückt, ich habe von l3oops Seite den Reg&Log Skript genommen und ihn bei mir eingebaut, so nachdem ich kleine Probleme behoben habe, bleib ich bei dem Problem stecken ich hab echt schon alles was mir spontan so eingefallen ist versucht, aber echt nichts funktioniert.
Hier der Login Skript ( -Orginal- )
Zitat: <?php mysql_connect ('localhost', 'blalba', 'bla'); mysql_select_db('blabla');
if(isset($_POST['login'])) { $username = $_POST['username']; $passw = $_POST['password']; $md5 = md5($passw); $query = mysql_query("SELECT * FROM `users` WHERE `username` = '$username' and $password = '$md5'"); $anzahl = mysql_num_rows($query);
//Nur zur Fehlersuche- echo mysql_errno() . ": " . mysql_error() . "\n"; //-- if (anzahl == 1) { $row = mysql_fetch_object($query); $_SESSION['loggedin'] = true; $_SESSION['userID'] = $row->user_id; echo "Du wurdest erfolgreich eingeloggt."; } }
?> So, sieht er nach dem entmöbeln meiner Versuche aus, trotzdem bleibt Fehler vorhanden undzwar:
Zitat: Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /users/--/www/Index/login.php on line 12 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= '029a8fasdd21362adasdd32627b4fasd6'' at line 2
Danke schonmal im Vorraus! Liebe Grüße Hilfe!
[Zuletzt bearbeitet: 17.09.2009 17:53]
________________________________________ Weisheit ist die Kunst, so zu leben, dass das, was man sich vornimmt, auch gelingt.
|
 |
|
| |
|
L3oop
|
| Titel: mysql_num_rows() expects parameter 1 to be resource |
17.09.2009 17:57 |
|
Moderator 45.021 Punkte (?)
Anmeldungsdatum: 25.04.2008
Beiträge: 9.399
 |
Experte |
|
Hallo,
das war ein Fehler von mir, ändere den untersten Code in das um:
Zitat: <?php mysql_connect ('localhost', 'blalba', 'bla'); mysql_select_db('blabla');
if(isset($_POST['login'])) { $username = $_POST['username']; $passw = $_POST['password']; $md5 = md5($passw); $query = mysql_query("SELECT * FROM `users` WHERE `username` = '$username' and `password` = '$md5'"); $anzahl = mysql_num_rows($query);
//Nur zur Fehlersuche- echo mysql_errno() . ": " . mysql_error() . "\n"; //-- if (anzahl == 1) { $row = mysql_fetch_object($query); $_SESSION['loggedin'] = true; $_SESSION['userID'] = $row->user_id; echo "Du wurdest erfolgreich eingeloggt."; } }
?>
Entschuldige nochmal, ich werde es gleich ausbessern 
Gruß L3oop
[Zuletzt bearbeitet: 17.09.2009 17:57]
________________________________________ Stereomix • Bootreihenfolge ändern • PC beschleunigen
|
 |
|
| |
|
Hilfe!
|
| Titel: mysql_num_rows() expects parameter 1 to be resource |
17.09.2009 19:08 |
|
|
Anmeldungsdatum: 15.08.2007
Beiträge: 2.443
|
Leider gleiche Meldung:
Zitat: Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /users/--/www/Index/login.php on line 12
Wenn du gerade ausbesserst kannst du hier auch deinen kleinen Fehler beim Registrierungs Formular ausbessern undzwar:
Zitat: if(strlen($username) < 2 or strlen($username) > 20 or strlen($password) < 4 or strlen($password) > 40 or $password != $password2)
Bei dir siehts nämlich so aus: Zitat: if(strlen($username) < 2 or strlen($username) > 20 or strlen($password) < 4 or strlen($password) < 40 or $password != $password2)
Sonst muss ja das Passwort über 40 Zeichen haben.
________________________________________ Weisheit ist die Kunst, so zu leben, dass das, was man sich vornimmt, auch gelingt.
|
 |
|
| |
|
L3oop
|
| Titel: mysql_num_rows() expects parameter 1 to be resource |
17.09.2009 19:18 |
|
Moderator 45.021 Punkte (?)
Anmeldungsdatum: 25.04.2008
Beiträge: 9.399
 |
Experte |
|
Was wird für eine MySQL-Fehlermeldung ausgegeben?
________________________________________ Stereomix • Bootreihenfolge ändern • PC beschleunigen
|
 |
|
| |
|
Hilfe!
|
| Titel: mysql_num_rows() expects parameter 1 to be resource |
18.09.2009 15:38 |
|
|
Anmeldungsdatum: 15.08.2007
Beiträge: 2.443
|
Das hier:
Zitat: Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /users/--/www/Index/login.php on line 12 1054: Unknown column 'password' in 'where clause'
[Zuletzt bearbeitet: 18.09.2009 15:39]
________________________________________ Weisheit ist die Kunst, so zu leben, dass das, was man sich vornimmt, auch gelingt.
|
 |
|
| |
|
L3oop
|
| Titel: mysql_num_rows() expects parameter 1 to be resource |
18.09.2009 15:42 |
|
Moderator 45.021 Punkte (?)
Anmeldungsdatum: 25.04.2008
Beiträge: 9.399
 |
Experte |
|
Schau mal in der Datenbank nach, ob es in der Tabelle users die Spalte "password" gibt.
________________________________________ Stereomix • Bootreihenfolge ändern • PC beschleunigen
|
 |
|
| |
|
Hilfe!
|
| Titel: mysql_num_rows() expects parameter 1 to be resource |
18.09.2009 16:01 |
|
|
Anmeldungsdatum: 15.08.2007
Beiträge: 2.443
|
Ok, hab gerade die Tabelle erstellt und den Registrierungs Code angepasst. Jetzt werden zwar die Reg-Daten in die Tabelle eingetragen aber beim Password also in der Tabelle erscheint der Zensier Code anstelle des echten Passworts.
Und beim login, komm ich dann auch nicht rein, hat das was mit der zensierung zutuhen?
Reg-Code:
Zitat: <?php mysql_connect("localhost", "bla", "blubelbla"); mysql_select_db("bla");
if(isset($_POST['register'])) { $username = $_POST['username']; $password = $_POST['password']; $password2 = $_POST['password2']; $anz = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `username` = '$username'"),0); if(strlen($username) < 2 or strlen($username) > 20 or strlen($password) < 4 or strlen($password) > 40 or $password != $password2) { echo "<b>Bitte überprüfe die Eingaben nochmals. Die Passwörter müssen übereinstimmen und die Angaben dürfen nicht zu kurz/lang sein.</b><br />"; } elseif($anz != 0) echo '<b>Leider gibt es diesen Benutzernamen bereits. Bitte gib einen anderen Namen ein.</b>'; else { $date = date("Y-m-d"); echo "<b>Du wurdest erfolgreich registriert. Du kannst dich nun <a href=\"login.php\">einloggen.</a></b><br />"; $error = false; $password = md5($password); mysql_query("INSERT into `users` (username, password) VALUES ('$username', '$password')"); } } ?>
Edit: ne liegt nicht dran habs kurz ohne versucht.
[Zuletzt bearbeitet: 18.09.2009 16:03]
________________________________________ Weisheit ist die Kunst, so zu leben, dass das, was man sich vornimmt, auch gelingt.
|
 |
|
| |
|
L3oop
|
| Titel: mysql_num_rows() expects parameter 1 to be resource |
18.09.2009 16:08 |
|
Moderator 45.021 Punkte (?)
Anmeldungsdatum: 25.04.2008
Beiträge: 9.399
 |
Experte |
Akzeptierte Antwort (+50 Punkte)
|
Bin ich doof Ersetze das
mysql_query("INSERT into `users` (username, password) VALUES ('$username', '$password')");
durch das
mysql_query("INSERT into `users` (username, password) VALUES ('".mysql_real_escape_string($username)."', '".md5($password)."')");
________________________________________ Stereomix • Bootreihenfolge ändern • PC beschleunigen
|
 |
|
| |
|
Hilfe!
|
| Titel: mysql_num_rows() expects parameter 1 to be resource |
18.09.2009 16:28 |
|
|
Anmeldungsdatum: 15.08.2007
Beiträge: 2.443
|
Hm...
Als ichs gemacht hab gleiche Fehler Meldung, konnt mich also trotzdem nicht einloggen, eig. logisch da die verbesserung fürs Reg-Formular gillt.
Aber als mir beim Login-Script eingefallen ist das ich das loggedin vergessen hatte hab ichs rasch in eine scripts.inc gepackt nun wenn ichs probier kommt das:
Zitat: Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /users/--/www/Index/Registrieren.php:62) in /users/--/www/Index/scripts.inc on line 10
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /users/--/www/Index/Registrieren.php:62) in /users/--/www/Index/scripts.inc on line 10
Login Script:
Zitat: <?php include("scripts.inc"); if(isset($_POST['login'])) { $username = $_POST['username']; $passw = $_POST['password']; $md5 = md5($passw); $query = mysql_query("SELECT * FROM `users` WHERE `username` = '$username' and `password` = '$md5'"); $anzahl = mysql_num_rows($query); if (anzahl == 1) { $row = mysql_fetch_object($query); $_SESSION['loggedin'] = true; $_SESSION['userID'] = $row->user_id; echo "Du wurdest erfolgreich eingeloggt."; } else { echo "Passwort oder Benutzername Falsch!"; } }
?> Reg-Code:
Zitat: <?php include("scripts.inc"); if(isset($_POST['register'])) { $username = $_POST['username']; $password = $_POST['password']; $password2 = $_POST['password2']; $anz = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `username` = '$username'"),0); if(strlen($username) < 2 or strlen($username) > 20 or strlen($password) < 4 or strlen($password) > 40 or $password != $password2) { echo "<b>Bitte überprüfe die Eingaben nochmals. Die Passwörter müssen übereinstimmen und die Angaben dürfen nicht zu kurz/lang sein.</b><br />"; } elseif($anz != 0) echo '<b>Leider gibt es diesen Benutzernamen bereits. Bitte gib einen anderen Namen ein.</b>'; else { echo "<b>Du wurdest erfolgreich registriert. Du kannst dich nun <a href=\"login.php\">einloggen.</a></b><br />"; $error = false; $password = md5($password); mysql_query("INSERT into `users` (username, password) VALUES ('".mysql_real_escape_string($username)."', '".md5($password)."')"); } } ?>
scripts.inc:
Zitat: <?php
mysql_connect ('localhost', 'asda', 'asdasd'); mysql_select_db('asd');
?> <?php
if(isset($_SESSION['loggedin'])) { $uid = $_SESSION['userID']; $user_query = mysql_query("SELECT * FROM `users` WHERE `user_id` = '$uid'"); $user = mysql_fetch_object($user_query); if($user->mod == 1) $mod = true; }
?>
//Extra ohne session...
________________________________________ Weisheit ist die Kunst, so zu leben, dass das, was man sich vornimmt, auch gelingt.
|
 |
|
| |
|
L3oop
|
| Titel: mysql_num_rows() expects parameter 1 to be resource |
18.09.2009 17:10 |
|
Moderator 45.021 Punkte (?)
Anmeldungsdatum: 25.04.2008
Beiträge: 9.399
 |
Experte |
|
Das session_start() muss ganz oben stehen, bevor irgendwas ausgegeben wird. Gleich in die erste Zeile, wenn auch nur ein Leerzeichen davor kommt, geht es nicht.
________________________________________ Stereomix • Bootreihenfolge ändern • PC beschleunigen
|
 |
|
| |
|
Hilfe!
|
| Titel: mysql_num_rows() expects parameter 1 to be resource |
18.09.2009 17:52 |
|
|
Anmeldungsdatum: 15.08.2007
Beiträge: 2.443
|
Geht leider nicht wirklich wenn ich es in der Schleife als erstes schreibe also so:
Zitat: <?php mysql_connect ('localhost', 'as', 'asd'); mysql_select_db('asd'); if(isset($_SESSION['loggedin'])) { session_start(); $uid = $_SESSION['userID']; $user_query = mysql_query("SELECT * FROM `users` WHERE `user_id` = '$uid'"); $user = mysql_fetch_object($user_query); if($user->mod == 1) $mod = true; }
?>
Kommt keine Fehler meldung mehr. EDIT: Ansonsten doch. Aber helfen tuts in sache einloggen leider nicht.
[Zuletzt bearbeitet: 18.09.2009 17:55]
________________________________________ Weisheit ist die Kunst, so zu leben, dass das, was man sich vornimmt, auch gelingt.
|
 |
|
| |
|
L3oop
|
| Titel: mysql_num_rows() expects parameter 1 to be resource |
18.09.2009 18:18 |
|
Moderator 45.021 Punkte (?)
Anmeldungsdatum: 25.04.2008
Beiträge: 9.399
 |
Experte |
|
Stelle das session_start() ganz an den Anfang, außerhalb des IF-Blocks. Du kannst ja nicht prüfen, ob eine Session-Variable existiert, und nur dann die Session starten
________________________________________ Stereomix • Bootreihenfolge ändern • PC beschleunigen
|
 |
|
| |
|
Hilfe!
|
| Titel: mysql_num_rows() expects parameter 1 to be resource |
18.09.2009 18:21 |
|
|
Anmeldungsdatum: 15.08.2007
Beiträge: 2.443
|
Zitat:Stelle das session_start() ganz an den Anfang, außerhalb des IF-Blocks. Du kannst ja nicht prüfen, ob eine Session-Variable existiert, und nur dann die Session starten
Entweder bin ich zu doof oder es funktioniert einfach nicht das tuhe ich aber die Fehlermeldung bleibt vorhanden kannst du bitte zeigen wie du das meinst? Ich bin mir eig. schon sicher das ich dich richtig verstanden hab aber funzen tut es nicht.
[Zuletzt bearbeitet: 18.09.2009 18:22]
________________________________________ Weisheit ist die Kunst, so zu leben, dass das, was man sich vornimmt, auch gelingt.
|
 |
|
| |
|
L3oop
|
| Titel: mysql_num_rows() expects parameter 1 to be resource |
18.09.2009 19:12 |
|
Moderator 45.021 Punkte (?)
Anmeldungsdatum: 25.04.2008
Beiträge: 9.399
 |
Experte |
|
Was genau funktioniert jetzt nicht?
Immer noch dieses "Cannot send..."? Da musst du dein Script durchdenken. Steht in jeder Datei <?php am Anfang? Also wirklich ganz am Anfang, da darf kein einziger Zeilenumbruch oder Leerzeichen vorher kommen.
[Zuletzt bearbeitet: 18.09.2009 19:14]
________________________________________ Stereomix • Bootreihenfolge ändern • PC beschleunigen
|
 |
|
| |
|
Hilfe!
|
| Titel: mysql_num_rows() expects parameter 1 to be resource |
18.09.2009 19:15 |
|
|
Anmeldungsdatum: 15.08.2007
Beiträge: 2.443
|
Ich glaube nur der Login-Skript funktioniert nicht. Beim Registrieren werden alle Daten in die Datenbank eingeschrieben. Beim Passwort ist dann die verschlüsslung in der Tabelle zu sehen.
Beim Login, kommt dann halt anstatt "erflogreich eingeloggt als blabla" die else klammer in schwung und sagt "passwort oder blabla.." Also muss irgendwie was mit der if schleife sein Zitat: if (anzahl == 1) { $row = mysql_fetch_object($query); $_SESSION['loggedin'] = true; $_SESSION['userID'] = $row->user_id; echo "Du wurdest erfolgreich eingeloggt."; }
Ich glaube das einfach anzahl eben nicht dem Wert 1 entspricht und die Schleife dadurch nicht gelesen wird. Nun ist die Frage wie setzt ich anzahl auf 1?
________________________________________ Weisheit ist die Kunst, so zu leben, dass das, was man sich vornimmt, auch gelingt.
|
 |
|
| |
|
|
|
|