Problem mit PHP-Login

koni1996

Grünschnabel
Hallo zusammen,

ich habe ein Loginskript, doch leider zeigt er mir immer an, dass Benutzername/Passwort falsch sind, unabhängig davon, ob sie das nun sind.

PHP:
<?php

//Session-Start
//Datenbank-Verbindung

$name = $_POST["name"];
$passwort = md5($_POST["passwort"]);

$abfrage = "SELECT name, passwort FROM user WHERE name = '$name' LIMIT 1";
$anfrage = mysql_query($abfrage);
$menge = mysql_fetch_row($anfrage);
$zeile = mysql_fetch_object($anfrage);

if($menge == 1)
{
if($zeile->passwort == $passwort)
{
$_SESSION["name"] = $name;
header("location: ...");
exit;
}
else
{
echo "Dein Name und/oder dein Passwort waren falsch!<br> <a href=\"/\">Zum Login</a>";
}
}
else
{
echo "Dein Name und/oder dein Passwort waren falsch!<br> <a href=\"/\">Zum Login</a>";
}
?>
 
Hallo und herzlich Willkommen im Forum!

Das Problem ist, dass du [phpf]mysql_fetch_row[/phpf] und danach [phpf]mysql_fetch[/phpf] aufrufst. Allerdings - wenn du eh nur eine Zeile im Ergebnis hast - wird die zweite Funktion false zurückliefern, weil keine Daten mehr vorhanden sind.

Übrigens würde ich dir mal raten, auf diesen Link zu klicken (offizielle PHP-Seite, keine Viren!):
http://de3.php.net/manual/en/function.mysql-fetch-row.php

Siehst du die Warnung, dass die MySQL-Erweiterung veraltet ist?

Außerdem hast du eine sehr große Sicherheitslücke!! Du kannst nicht einfach $_POST['name'] im SQL-Query so verwenden!!
PHP:
$name = mysql_real_escape_string($_POST['name']);
Am besten gleich Prepared Statements verwenden, dann hast du solche Probleme weniger.


Nach deinem 2. Beitrag
Ja, oder so.
 
Zurück