Passwortüberprüfung funktioniert nicht

Bertelcraft

Mitglied
Hallo!

Ich bin gerade dabei ein kleines Loginscript für PHP zu schreiben. Jedoch scheitert es schon an der Überprüfung "eingegebenes Passwort - registriertes Passwort". Dies scheint jetzt nicht weiter interessant zu sein, jedoch funktioniert derselbe Code bei einem sehr ähnlichen Beispiel. Ich poste einfach mal den Code:
PHP:
<?
$username = $_POST["username"];
$pass1 = $_POST["pass1"];
## username check
$connect = mysql_connect('127.0.0.1','---','---') or die ("Verbindungsaufbau zum Datenbankserver fehlgeschlagen. (100)");

mysql_select_db("---",$connect) or die("Auswahl der Datenbank fehlgeschlagen (101)");
$query = 'SELECT `password` FROM `user` WHERE `username` = CONVERT(_utf8 \'$username\' USING latin1) COLLATE latin1_german2_ci LIMIT 1';
$check = mysql_query($query) or die ("Die Abfrage des Benutzernamens konnte nicht ausgef&uuml;hrt werden. (102)");

mysql_close($connect);

if ($pass1 == $check)
{
echo "Login erfolgreich!<br>";
}
else
{ die ("Passwort falsch! <br> <a href=\"index.htm\"> Zur&uuml;ck</a>");}
?>

Könnte mir jemand bitte erklären, warum dieser Code auf der einen Seite funktioniert und auf der anderen nicht?

Bertelcraft

P.S.: Datenbankverbindung ist ok, an der liegt es nicht.
 
hi

bei deinem Query steht der String in ' ' Zeichen, da werden dann aber Variablen nicht geparst.

Versuchs mal mit ".

lg
 
Ein weiterer Fehler: die mysql_query()-Funktion liefert als Rückgabewert nur eine Ergebnisressource, von der die einzelnen Datensätze erst noch abgeholt werden müssen.
 
Erstmal danke für die schnellen Antworten.

@higret: Ich habe jetzt
PHP:
$query = 'SELECT `password` FROM `user` WHERE `username` = "$username" LIMIT 1';
<-- So müsste es eigentlich stimmen?

@Gumbo: Doofe Frage, aber wie mach ich das? Könntest du mir einen Link zeigen oder mir das kurz erklären. Ich steh' nämlich grad voll auf der Leitung. ;)

MfG
Bertelcraft
 
PHP:
$username = $_POST["username"];
$pass1 = $_POST["pass1"];
## username check
$connect = mysql_connect('127.0.0.1','---','---') or die ("Verbindungsaufbau zum Datenbankserver fehlgeschlagen. (100)");

mysql_select_db("---",$connect) or die("Auswahl der Datenbank fehlgeschlagen (101)");
$query = 'SELECT `password` FROM `user` WHERE `username` = "'.mysql_real_escape_string($username)'" LIMIT 1';
$check = mysql_query($query) or die ("Die Abfrage des Benutzernamens konnte nicht ausgef&uuml;hrt werden. (102)");
mysql_close($connect);

if( ($row=mysql_fetch_assoc($check)) && $pass1 == $row['password'] ) {
	echo "Login erfolgreich!<br>";
} else {
	die("Logindaten falsch! <br> <a href=\"index.htm\"> Zur&uuml;ck</a>");
}
 
Die Antwort kam aber schnell ;)

Funktioniert auch bestens, nur hast du einen Punkt vergessen.
'.mysql_real_escape_string($username).'
 
Zurück