Ich arbeite gerade an einem Web-Projekt für die Uni, welches im Prinzip auf einem phpBB3 Forum basiert. Die komplette Zugriffsberechtigung für die Seite basiert auf den Foren-Accounts. Heute morgen war der Startschuss für die Pilotphase in einer Fakultät mit ca. 260 Personen, die Zugriff darauf benötigten. Von diesen Personen hatte ich eine Excel-Tabelle, aus der ich eine CSV-Datei gemacht habe, die ich mit randomisierten Passwörter (alphanumerisch mit 8 Zeichen) befüllt habe. Auf Basis dieser CSV-Datei habe ich mit folgendem Skript die User in der Datenbank erstellt:
Code: Alles auswählen
<?php
define('IN_PHPBB', true);
$phpbb_root_path = 'forum1/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
/*
CSV-File HAS to have this structure:
something,something,Mail,Username,Password
*/
$csvFile = "csvtest.csv";
$fileArray = file($csvFile);
for($i=0; $i < count($fileArray); $i++) {
$array = explode(",", $fileArray[$i]);
if(count($array) != 6) {
echo "Wrong input format in line ".$i.".";
} else {
$user_row = array(
'username' => $array[4],
'user_password' => phpbb_hash($array[5]),
'user_email' => $array[3],
'group_id' => 8, // 2=Registered, 4=Global Moderator, 5=Admin, 8=Sowi-Fak.
'user_lang' => 'de_x_sie',
'user_type' => USER_NORMAL,
);
$user_id = user_add($user_row);
echo utf8_decode($array[4]);
}
echo "<br>";
}
?>
Es funktionierte auch bei ALLEN Tests, die ich durchgeführt habe (diverse Testaccounts wurden darüber erstellt), daher bin ich davon ausgegangen, dass es auch funktioniert, wenn es dann drauf ankommt. Also habe ich die CSV-Datei mit den Daten der 260 Leuten befüllt und die User erstellt. Gab auch keinen Fehler oder soetwas.
Heute morgen jedoch kommen die ersten Mails, dass bei manchen die Passwörter nicht funktionieren. Stichprobenartige Tests meinerseits haben ergeben, dass ALLE oder zumindest sehr sehr viele der Passwörter nicht gehen. Ich habe dann mit meinem Kollegen nach einer Lösung per Skript gesucht, aber auch das Nachsetzen des Passworts per SQL-Query funktionierte nicht (also der Login funktionierte dann auch nicht). Lediglich das manuelle Nachsetzen über das Admin-Menü hat funktioniert (immer). Als Übergangslösung, damit es jetzt erst einmal funktioniert, haben wir jetzt die Liste aufgeteilt und alle 260 Passwörter per Hand neu gesetzt.
Die Frage ist jedoch: Warum könnte es gescheitert sein? Das Passwort wird doch vorher über die phpbb_hash Funktion verschlüsselt und müsste dann in der Datenbank gespeichert doch soweit funktionieren. Oder gibt es da noch mehr zu beachten?
Was mich total verwirrt hat ist auch, dass all die Tests funktioniert haben. Wir hatten nie ein nicht-funktionierendes Passwort. Da kann doch irgendwas nicht stimmen...
Ich würde mich sehr über Unterstützung freuen, wir wissen nämlich nicht mehr weiter!
Vielen Dank schonmal,
Stefan
Edit: Ich hab es gerade noch einmal getestet, wenn ich einen Testuser mit dem oben geposteten Skript erstelle, kann ich mich wunderbar einloggen. Daher versteh ich immer noch nicht, warum es vorher gescheitert ist. Auch das nachträgliche Ändern der Passwörter hat jetzt geklappt. Könnte es ein Datenbankfehler gewesen sein? (nach dem Ändern über das Adminmenü ging es ja...)