Seite 1 von 1

Umstellung auf phpBB3, Login für Webseite

Verfasst: 09.08.2012 10:41
von lichtweg
Hallo,

ich bin dabei mein Forum das seit sehr vielen Jahren online ist auf PhpBB umzustellen, die Konvertierung hat so weit auch geklappt. Allerdings habe ich nun das Problem das mein Login auf der Hauptseite nicht mehr funktioniert. Ich nutze die PHPBB Datenbank seit Jahren auch für die Webseite und habe dort beim Login immer überprüft ob User die richtigen Daten aus der Forendatenbank eingeben, es fand dabei kein direktes externes Login ins Forum statt sondern nur auf interne Bereiche der Webseite. Für das Forum mussten die User sich noch mal neu anmelden, das ist zwar etwas umständlich aber genauso gewollt, da User das Forum erst nach einer gewissen Zeit nutzen können usw.

Ich habe schon gesehen das das Passwort nun anders verschlüsselt wird, doch wie kann nun überprüfen ob User das richtige Passwort eingegeben haben?

Ich benötige also wirklich nur die Passwortüberprüfung, kein Login ins Forum.

Bin sehr froh wenn ihr mir da weiterhelfen könnt.

Vielen Dank!

Liebe Grüße, Sandra

Re: Umstellung auf phpBB3, Login für Webseite

Verfasst: 09.08.2012 18:16
von Miriam
Schau Dir mal die Funktion phpbb_hash() in der /includes/functions.php an.
Du brauchst dann nur das Passwort da durchjagen und vergleichen, ob das verschlüsselte Passwort in der DB mit dem Rückgabewert der Funktion übereinstimmt.

Re: Umstellung auf phpBB3, Login für Webseite

Verfasst: 10.08.2012 11:16
von lichtweg
Hallo,

dankeschön! Ich hab es nun so gelöst:

Code: Alles auswählen

define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : 'phpBB3/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
require($phpbb_root_path . 'common.' . $phpEx);

$username     = request_var('name', '', true);
$passwort     = request_var('passwort', '', true);

$m=mysql_fetch_array(mysql_query("SELECT * FROM phpbb3_users WHERE username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'"));  

if (!phpbb_check_hash($passwort,$m['user_password']))
{
echo "Passwort falsch";
}
else
{
    #echo "ok passwort";  
}
Das geht auch, allerdings nur wenn das man sich vorher einmal im Forum eingeloggt hat und das Passwort von dort in das neue Format konvertiert wurde. Ansonsten kommt hier falsches Passwort. Wie muss die Abfrage sein wenn das Passwort noch nicht konvertiert wurde? Ich weiß das das Datenbankfeld user_pass_convert auf 1 steht, aber wie ist das Passwort dann verschlüsselt? MD5 scheint es nicht zu sein, oder doch?


Danke für die Hilfe.

Alles Liebe, Sandra

Re: Umstellung auf phpBB3, Login für Webseite

Verfasst: 10.08.2012 12:30
von Miriam
phpBB hatte vor der neuen Verschlüsselung ein Md5 codiertes Passwort in der DB.

Re: Umstellung auf phpBB3, Login für Webseite

Verfasst: 10.08.2012 12:33
von lichtweg
Ja, das ist mir bekannt, aber wenn ich das PhpBB2 Forum in PHPBB3 Forum konvertiere und mich NOCH NICHT über das Forum einlogge, werden die Passwörter anders dort gespeichert, es ist ein anderer Schlüssel als in PHPBB2 Forum und noch nicht der gleiche Schlüssel als wenn ich mich über das Forum das erste mal einlogge.

Liebe Grüße, Sandra

Re: Umstellung auf phpBB3, Login für Webseite

Verfasst: 10.08.2012 12:44
von lichtweg
Hallo,

ok ich habe die Lösung gefunden. Danke für deine Hilfe. Hier der Code für alle die vor dem selben Problem stehen.

Wenn User sich auf der Seite einloggen möchten, das Passwort aber noch nicht im richtigen Format ist kommt folgender Code zum tragen:

Code: Alles auswählen

if($m['user_pass_convert']=="1")
{



	$password_old_format = isset($_REQUEST['passwort']) ? (string) $_REQUEST['passwort'] : '';
	$password_old_format = (!STRIP) ? addslashes($password_old_format) : $password_old_format;
	$password_new_format = '';

		set_var($password_new_format, stripslashes($password_old_format), 'string');

		if ($password == $password_new_format)
		{
			if (!function_exists('utf8_to_cp1252'))
			{
				global $phpbb_root_path, $phpEx;
				include($phpbb_root_path . 'includes/utf/data/recode_basic.' . $phpEx);
			}

			// cp1252 is phpBB2's default encoding, characters outside ASCII range might work when converted into that encoding
			// plain md5 support left in for conversions from other systems.
			if ((strlen($row['user_password']) == 34 && (phpbb_check_hash(md5($password_old_format), $row['user_password']) || phpbb_check_hash(md5(utf8_to_cp1252($password_old_format)), $row['user_password'])))
				|| (strlen($row['user_password']) == 32  && (md5($password_old_format) == $row['user_password'] || md5(utf8_to_cp1252($password_old_format)) == $row['user_password'])))
			{
				$hash = phpbb_hash($password_new_format);

				// Update the password in the users table to the new format and remove user_pass_convert flag
				$sql = 'UPDATE ' . USERS_TABLE . '
					SET user_password = \'' . $db->sql_escape($hash) . '\',
						user_pass_convert = 0
					WHERE user_id = ' . $row['user_id'];
				$db->sql_query($sql);

				$row['user_pass_convert'] = 0;
				$row['user_password'] = $hash;


               }}
Danach klappt die im oben stehenden Beitrag Abfrage wunderbar.

Viele Grüße, Sandra

Re: Umstellung auf phpBB3, Login für Webseite

Verfasst: 13.08.2012 15:51
von lichtweg
Hallo,

leider habe ich doch ein Problem entdeckt, wenn ein User in dem Usernamen oder Passwort ein Umlaut hat funktioniert das Script nicht.

Die Variablen sind dann leer, und wenn ich sie mit $username=$_POST['name'] abrufe sind sie zwar gefüllt doch die Abfrage klappt dennoch nicht. Es kommt immer das die Daten falsch sind obwohl sie definitiv richtig eingegeben sind.

Weiß da jemand einen Rat?

Danke!

Alles Liebe, Sandra

Re: Umstellung auf phpBB3, Login für Webseite

Verfasst: 13.08.2012 21:11
von Miriam
Schon gelesen? Klick

Re: Umstellung auf phpBB3, Login für Webseite

Verfasst: 21.08.2012 11:07
von lichtweg
Hallo,

danke für den Link, habe es nun so umgesetzt und das Login funktioniert nun auch mit Umlauten. Musste dazu alle meine Seiten auf UTF-8 und die Datenbank auf mysql5 umstellen, das war ein sehr großer Aufwand weil der Lichtweg über 100 Seiten hat. :wink:

Danke für die Hilfe!

Alles Liebe, Sandra