Php Mysql Abfrage funktioniert nicht...

  • Themenstarter Themenstarter lacie
  • Beginndatum Beginndatum
L

lacie

hallo zusammen,

ich hab folgendes Problem:
Mein Loginformular funktioniert nicht.
Man gibt Nick und Passwort ein und drückt auf Submit (wie gewöhnlich)
dadurch wird meine login.php aufgerufen (action des formulares)
darin steht:

PHP:
$login = mysql_escape_string(trim($_POST['login']));
		$passw = md5($_POST['passw']);
		echo $login;
		echo "<br>";
		echo $passw;
		$checkme = mysql_query("SELECT * FROM ".$GLOBALS['td_user']." WHERE `nick` ='".$login."' AND `password` ='".$passw."'");
		echo mysql_error();
		echo mysql_num_rows($checkme);

Das ist allerdings nicht das vollständige, nur ein Abschnitt der nicht das macht was ich will...

Mit mysql_num_rows wird doch überprüft ob es eine Zeile in der Datenbank mit den Werten gibt.
Das würde bedeuten, wenn der User bei mir existiert und das Passwort stimmt,
müsste er nachher bei echo mysql_num_rows($checkme) doch eine 1 ausgeben?!

Er tut es aber nicht..
Passwort stimmt, Username stimmt...

Wo liegt mein Schreib/Denkfehler?
 
Lass dir mal eventuelle Fehler der SQL-Anfrage ausgeben:

Statt dem

PHP:
$checkme = mysql_query("SELECT * FROM ".$GLOBALS['td_user']." WHERE `nick` ='".$login."' AND `password` ='".$passw."'");

Machst du das:

PHP:
$checkme = mysql_query("SELECT * FROM ".$GLOBALS['td_user']." WHERE `nick` ='".$login."' AND `password` ='".$passw."'") or die(mysql_error());

mfg
 
Macht kein Unterschied,
alles was ausgegeben wird ist:

lacie
c4ca4238a0b923820dcc509a6f75849b0

wobei die letzte 0 mysql_num_rows($checkme) ist....(<br> vergessen)
 
Am Global Array kann es nicht liegen,
hab es gerade ohne die Variable mit dem richtigen Namen probiert..
gleiches Ergebnis...

Ich seh irgendwie auch keinen Fehler, aber wieso spuckt mysql_num_rows nicht 1 aus?
Wenn der Eintrag doch genauso (Ich hab das PW und Nick in phpmyadmin überprüft)
vorhanden ist...
 
Hast du das PW in der DB auch mit md5 verschlüsselt? Wenn ja dann schreib deine SQL-Anweisung mal so:

Code:
"SELECT * FROM `".$GLOBALS['td_user']."` WHERE nick='".$login."' AND password='".$passw."'"

Bei mir hat's teilweise probleme mit den ` und den ' gegeben. Aber seit ich meine Abfragen immer im gleichen Muster schreibe hab' ich keine Probleme mehr. Die Values bekommen immer die ' und die Tabellennamen bekommen immer ` und die Spaltennamen bekommen weder das eine noch das andere. Klingt komisch, aber bei mir t das seit dem problemlos.
 
schade, bei mir nicht :(

natürlich ist das PW auch in der DB verschlüsselt. (bzw gehashed)
was in der Variable $passw steht ist aber genau das was auch in der DB steht..

theoretisch könnte ich auch einfach alle Werte aus der Tabelle auslesen und dann überprüfen ob eine Spalte Name + PW enthält...


PHP:
$checkme = mysql_query("SELECT * FROM `".$GLOBALS['td_user']."` '");
while($row = mysql_fetch_assoc($checkme);){
         If ($row['nick'] == $nick AND $row['password'] == $passw){
         // tu was
        }
}
 
Ja schon, nur wird die Anfrage ungleich stärker. Stell dir vor du hast 300 User, dann muss das Script alle durcharbeiten, bis es den richtigen gefunden hat.

Ich versteh das auch nicht! Warte ich werde mir kurz selber das alles anlegen und ausprobieren!

mfg

edit: Total seltsam! Bei mir funktioniert alles perfekt!

Das bekomm ich raus:
Code:
Testuser
098f6bcd4621d373cade4e832627b4f6
1

Und der Code welchen ich benutzt habe sieht so aus:

PHP:
        $_POST['login']='Testuser';
        $_POST['passw']='test';
        $GLOBALS['td_user']='testtab_user';
        
        $login = mysql_escape_string(trim($_POST['login']));
        $passw = md5($_POST['passw']);
        echo $login;
        echo "<br>";
        echo $passw."<br>";
        $checkme = mysql_query("SELECT * FROM `".$GLOBALS['td_user']."` WHERE nick='".$login."' AND password='".$passw."'");
        echo mysql_error();
        echo mysql_num_rows($checkme)."<br>";

Eintrag in der Tabelle
Code:
+----------+----------+----------------------------------+
|    ID    |   nick   |             password             
+----------+----------+----------------------------------+
|     1    | Testuser | 098f6bcd4621d373cade4e832627b4f6 |
+----------+----------+----------------------------------+
 
Zuletzt bearbeitet:
ja schon klar, nur wenn das nicht funktioniert...

bin gespannt was du rausbekommst..

// edit
ich kopier mal deinen Code und probiers nochmal
 
Zuletzt bearbeitet von einem Moderator:
lol
alles was sich geändert ist....der Zeilenumbruch x)

Code:
Admin
2b4d791de7bc12ba2c93e76907d83342
0

Ich lass mir jetzt erstmall per Select alles ausgeben ..
vielleicht liegt der Fehler wirklich im array..

//edit
hab mir das query mal angeschaut:
SELECT * FROM `gpl_user` WHERE nick='Admin' AND password='2b4d791de7bc12ba2c93e76907d83342'

stimmt alles..
nur nacher das ausgeben geht nicht... :?
 
Zuletzt bearbeitet von einem Moderator:
Zurück