PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : login macht Probleme


wbs
08.04.2006, 11:13
Hallo. Da ich leider dieses Login sehr schnell hinbekommen muss, aber nicht weiß wo der Fehler liegt bitte ich um eure Hilfe.

<?
session_start();
if (isset($_POST['login'], $_POST['password'])
AND
strcmp(trim($_POST['login']),'') !=0
AND
strcmp(trim($_POST['password']),'') !=0 ) {
// Herstellen einer Verbindung zu MySQL
$connect = mysql_connect("localhost","","") or die ("Keine Verbindung zum Server möglich");
mysql_select_db("usr_web1_1",$connect) or die ("Datenbank existiert nicht");
$sql = "SELECT userid, username, password, email FROM forum_user WHERE username = '".trim($_POST['login'])."' AND password = '".md5(trim($_POST['password']))."'";
$res = mysql_query($sql);
// Es darf nur maximal ein Datensatz selektiert werden. Bei mehr wird der Login aus Sicherheitsgründen abgebrochen.
if (mysql_num_rows($res) !=1) {
header('Location:login/fehllogin.php');
exit();
} else {
// Die Session bekommt Wert true und ihr werden versch. Elemente angehangen
$_SESSION['eingeloggt'] = true;
$user = mysql_fetch_object($res);
$_SESSION['userid'] = $user->userid;
$_SESSION['username'] = $user->username;
$_SESSION['password'] = $user->password;
$_SESSION['email'] = $user->email;
// Der Login war erfolgreich und der User wird zur geschützten Seite geschickt
header('Location:community/community.php');
exit();
}
} else {
header('Location:community/index.php');
exit();
}
?>

Aber was mache ich falsch? Das Programm leitet mich immer wieder zur fehllogn.php obwohl er das nur machen soll, wenn mehr als ein Datensatz selektiert ist.

StGaensler
08.04.2006, 12:42
Lass dir "mysql_num_rows($res)" einfach mal ausgeben, dann kommst sehr schnell dahinter, dass überhaupt kein Datensatz markiert wird, weil es auch keinen Datensatz gibt, der auf deine Kriterien passt.

Um das Passwort zu bekommen, wie es in der Datenbank gespeichert ist, musst du von dem Benutzer, der sich einloggen will, erst den Wert, der in der Spalte "salt" gespeichert ist, auslesen, und dann bekommst du mit md5(md5($plaintext_password).$salt) den Wert, wie er in der Datenbank gespeichert wird. Du wendest aber auf das Passwort nur einmal die Funktion md5() an, dann kann es nichts werden.

Deine Frage ist aber eher eine Sache für vbhacks-germany - wenn du noch weitere Fragen hast, kannst du dann bitte bei vbhacks-germany.com nach Hilfe fragen (http://vbhacks-germany.com/forum/forumdisplay.php?f=46).

Viele Grüße,
Stefan

PS: Was mir noch auffällt: Im Header nach "Location" muss immer eine komplette URL mit "http" vorneweg stehen!