Großes Problem: Bulk-Erstellen von Usern

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
KuroExo
Mitglied
Beiträge: 3
Registriert: 16.05.2012 01:02

Großes Problem: Bulk-Erstellen von Usern

Beitrag von KuroExo »

Hallo liebes phpBB-Forum!

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>";
}

?>
(ich weiß, ist nicht gut kommentiert, aber sollte ja in dem Moment nur zweckmäßig sein).

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...)
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: Großes Problem: Bulk-Erstellen von Usern

Beitrag von Pyramide »

Mögliche Fehlerursachen, die mir einfallen:
  • Leerzeichen in der CSV-Datei, die dann in der Variable fürs Passwort landen und mitgehasht werden
  • Kommata im Passwort, die dann das explode() durcheinanderbringen (wobei dann eigentlich die Prüfung auf 6 Elemente fehlschlagen sollte)
  • Falscher Zeichensatz der CSV-Datei (phpBB arbeitet durchgängig mit UTF-8)
KB:knigge
KuroExo
Mitglied
Beiträge: 3
Registriert: 16.05.2012 01:02

Re: Großes Problem: Bulk-Erstellen von Usern

Beitrag von KuroExo »

Pyramide hat geschrieben:Mögliche Fehlerursachen, die mir einfallen:
  • Leerzeichen in der CSV-Datei, die dann in der Variable fürs Passwort landen und mitgehasht werden
  • Kommata im Passwort, die dann das explode() durcheinanderbringen (wobei dann eigentlich die Prüfung auf 6 Elemente fehlschlagen sollte)
  • Falscher Zeichensatz der CSV-Datei (phpBB arbeitet durchgängig mit UTF-8)
Kann ich leider alles ausschließen. In der CSV sind keine Leerzeichen, es sind definitiv nur Ziffern und Buchstaben im Passwort (ich habe bei einem Test zwischendurch auch den Passwort-String nochmal ausgeben lassen) und die CSV-Datei ist definitiv UTF-8 kodiert. Es hat ja auch vorher immer funktioniert, und vorhin, als ich noch einen weiteren User erstellen musste, gab es auch keine Probleme. Vielleicht war es auch nur irgendein dummes, temporäres Problem...
Antworten

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