Seite 1 von 1

Passwort zur Überprüfung codieren

Verfasst: 29.01.2009 21:37
von Magnus123
Hallo,

ich habe neben meinem Forum noch einen weiteren Bereich, der passwortgeschützt ist. Ich möchte, dass der Benutzer sich auch im "Nicht-Forum-Bereich" mit dem Passwort aus dem Forum einloggen kann. Dazu würde ich gerne erfahren wie man kontrollieren kann, ob das eingegebene Passwort dem in der Datenbank gespeicherten entspricht. Wäre das ganze mit einem md5 oder sha1, dann wäre es kein Problem, aber in diesem extrem lange "PHP password hashing framework" blicke ich nicht ganz durch. Ich denke, dass man den kompletten Teil von

Code: Alles auswählen

function phpbb_hash($password)
{
bis

Code: Alles auswählen

$output = substr($setting, 0, 12);
	$output .= _hash_encode64($hash, 16, $itoa64);

	return $output;
}
benötigt. Und dann? Wie kann ich dann kontrollieren, ob das im Textfeld befindliche Wort gehasht dem Passwort in der Datenbank entspricht? Ich dachte so, aber das ist falsch:

Code: Alles auswählen

phpbb_check_hash($password, $pw_aus_formular)
Vielen Dank im Vorraus

Re: Passwort zur Überprüfung codieren

Verfasst: 29.01.2009 22:13
von jimmartens
Dann formuliere den Code testweise doch um, Backup nicht vergessen. Am besten ersetzt du den langen Schwanz von Code durch eine einfache Eingabe:

Code: Alles auswählen

$password = $_POST['wasauchimmer'];

$crypt = md5($password);

mysql_connect($db['host'], $db['uid'], $db['pwd']);
mysql_select_db($db['db']);
$sql = "SELECT id, password FROM users";
$result = msql_query($sql);
$zeilen = mysql_fetch_row($result);
if($zeilen->password == $crypt)
{
    $text = 'Sie haben das richtige Passwort eingegeben';
}
else
{
    $text = 'Sie haben leider ein falsches Passwort eingegeben.';
}
Das müsste eigentlich den Sinn und Zweck erfüllen.

Re: Passwort zur Überprüfung codieren

Verfasst: 29.01.2009 23:19
von Magnus123
Danke erstmal,

aber das Passwort ist ja leider nicht nur als md5 gespeichert, sondern zusätzlich noch mit dem SALT-Wert verschlüsselt.

Re: Passwort zur Überprüfung codieren

Verfasst: 30.01.2009 12:08
von Magnus123
Ok, ich habe es jetzt so gemacht, dass über die Hauptseite der Login erfolgen kann und man dann im Forum eingeloggt wird. Nun möchte ich aber auch, dass man auf der Hauptseite eingeloggt wird. Dazu möchte ich einen Cookie verwenden, der den Benutzernamen speichert, so dass man auch auf der Hauptseite als eingeloggtes Mitglied erkannt wird.

Dazu habe ich folgendes versucht:

In der ucp.php habe ich hinter zusätzlich zum schon vorhandenen "case->login" einen weiteren case hinzugefügt:

Code: Alles auswählen

case 'login_start':
		if ($user->data['is_registered'])
		{
			redirect(append_sid("{$phpbb_root_path}index.$phpEx"));
		}
		
setcookie("Benutzer", "".$user->data['username']."", 0, "/", "example.com");
		login_box(header("Location:http://www.example.com/login.php?action=loggedin"));
	break;
Das funktioniert auch, nur ist das Problem, dass der Inhalt des Coookies ($user->data['username']) immer "Anonymous" ist und nicht der korrekte Benutzername. Woran liegt das? Ist vielleicht das $user->data['username'] falsch?