Login auf eine Seite mit PHP und DB

Golz

Erfahrenes Mitglied
Morgen,

ich habe ein kleines Problem ^^

also folgendes:

ich habe eine DB in der gibt es 2 Tabellen:

- User
- Klassensprecher

In der Tabelle User sind die Felder:

- Username
- Passwort (md5 verschlüsselt)
- Page (hier habe ich die Page des jeweiligen Users eingetragen mit "./user.php" oder "./admin.php")

In der index.php sind 2 Felder. Username und Passwort. dann noch ein submit button "Login".

der form Post stimmt auch.

in der Login.php sieht es folgendermaßen aus:

PHP:
<?php require_once('Connections/klassensprecherwahl.php'); ?>
<?php
mysql_select_db($database_klassensprecherwahl, $klassensprecherwahl);
$query_login = "SELECT Username, Passwort, Page FROM `user`";
$login = mysql_query($query_login, $klassensprecherwahl) or die(mysql_error());
$row_login = mysql_fetch_assoc($login);
$totalRows_login = mysql_num_rows($login);

if ($user == $row_login['Username'])
{
	if ($passwort == $row_login['Passwort']
	{
		echo ?> Login erfolgreich.<br> Bitte klicken Sie <a href="<?php $row_login['Page'] ?>">hier</a> um auf Ihre Seite zu gelangen.<br> oder Sie werden nach 5 Sekunden weiter geleitet.<br> <?php ;
	}
}
else
{
	echo "Login war nicht erfolgreich bitte versuchen Sie es erneut.";
}
?>
<html>
<head><meta http-equiv="refresh" content="5" URL="./<?php $row_login['Page'] ?>" ></head>
</html>

zur DB connectet er richtig. den Tag hab ich aus dem Dreamweaver. und auch schon mit mehreren echo´s getestet. also Daten sind da aber werden Falsch benutzt.

so nun zu dem wirklichen Problem:

wenn ich auf Login klicke möchte ich, dass der User auf seine, in der DB stehnde, Page weitergeleitet wird. aber ich hab jetzt schon zich versuche gestartet und verzweifle fast schon und des nur am Login :suspekt:

vielleicht kann mir einer von euch weiterhelfen.

Egal welchen Fehler ich gemacht hab bitte sagt es mir. *heul*

Vielen Dank

Patrick
 
Deine SQL-Abfrage liefert immer die komplette Liste aller User zurück. Du solltest die Liste nach dem übergebenen Nutzernamen und Passwort einschränken und prüfen, ob ein Datensatz zurück kommt. Wenn ja, war der Login erfolgreich.

Zudem sagtest du, dass das Passwort in der Datenbank, mittels md5() gehasht, abgelegt wird. Das übergebene Passwort musst du natürlich auch mit md5() hashen, um den Vergleich herstellen zu können.

Und noch eine Anmerkung: Seit der PHP-Version 4.2.0 ist der Parameter register_globals standardmäßig deaktiviert. Du solltest via $_GET['variablenname'] oder $_POST['variablenname'] (je nach Übergabemethode) die Daten abrufen.

Sven
 
PHP:
<html>
<head><title>Klassensprecherwahl</title></head>
<body>
<form action="./login.php" method="post">
Username:
<input name="user" value="<?php echo $_POST["user"]; ?>" type="text" size="20" maxlength="20">
<br>
<br>
Passwort:
<input name"passwort" value="<?php echo $_POST["passwort"]; ?>" type="password" size="20" maxlength="20"><br><br>
<input type="submit" value="Login">
<br>
<br>
</form>
</body>
</html>

das ist der Quelcode von der index.php

des haste doch gemeint oder?
 
Ich habe Dir eigentlich alle Tipps gegeben, mit denen du dein Script zum Laufen bringen solltest. Den Quellcode vom Formular brauche ich daher nicht.
 
er meinte folgendes:
PHP:
$query_login = "SELECT Username, Passwort, Page FROM `user` WHERE Username= '".$_POST['Username']."' AND Passwort= '".md5($_POST['Passwort'])."' LIMIT 1";



//...
 
Golz hat gesagt.:
und wie kann ich das Passwort in der Index.php mit md5 verschlüsselt schicken?
betrachte mal meine SQL Anweisung, die verschlüsselst das eingegebene Passwort und vergleicht es mit der verschlüsselten Version in der Datenbank. Wenn du ein Ergebnis zurückbekommst (mysql_num_rows($result)==1) stimmen Benutzername und Passwort und der user darf auf seine Seite...

mfg

alex
 
Eine Anmerkung habe ich noch: Um SQL-Injections zu vermeiden, sollten die Variablen im SQL-Statement escaped werden:
PHP:
 $query_login = "SELECT Username, Passwort, Page FROM `user` WHERE Username= '".mysql_escape_string($_POST['Username'])."' AND Passwort= '".md5($_POST['Passwort'])."' LIMIT 1";
(Das Passwort muss nicht escaped werden, da [phpf]md5[/phpf] immer einen Hexadezimalwert zurück liefert, der keine Sonderzeichen enthalten kann, die die SQL-Abfrage manipulieren könnten)

Sven
 
hat sich alles erledigt ^^ bin fündig geworden und es funktioniert :D

VIELEN Dank an alle


Grüßle

Patrick
 
Zuletzt bearbeitet:
Zurück