Passwort zur Überprüfung codieren

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Magnus123
Mitglied
Beiträge: 3
Registriert: 29.01.2009 21:30

Passwort zur Überprüfung codieren

Beitrag 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
jimmartens
Mitglied
Beiträge: 369
Registriert: 28.11.2008 20:04
Wohnort: Hamburg
Kontaktdaten:

Re: Passwort zur Überprüfung codieren

Beitrag 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.
Um es für die Supporter einfacher zu machen: Hier meine Forums-Adresse: Mein Eisenbahn-Forum
Magnus123
Mitglied
Beiträge: 3
Registriert: 29.01.2009 21:30

Re: Passwort zur Überprüfung codieren

Beitrag 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.
Magnus123
Mitglied
Beiträge: 3
Registriert: 29.01.2009 21:30

Re: Passwort zur Überprüfung codieren

Beitrag 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?
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“