Schnittstelle - Benutzer über externes PHP-Skript anlegen

Du suchst einen bestimmten Mod, weißt aber nicht genau wo bzw. ob er überhaupt existiert? Wenn dir dieser Artikel nicht weiterhilft, kannst du hier den von dir gewünschten/gesuchten Mod beschreiben ...
Falls ein Mod-Autor eine der Anfragen hier aufnimmt, um einen neuen Mod zu entwickeln, geht's in [3.0.x] Mods in Entwicklung weiter.
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.
Kalum
Mitglied
Beiträge: 5
Registriert: 30.04.2008 13:53

Schnittstelle - Benutzer über externes PHP-Skript anlegen

Beitrag von Kalum »

Hallo,
ich habe auf meiner Webseite eine Benutzerverwaltung. Nun möchte ich, wenn ein User sich auf dieser registriert, auch gleich einen Nutzer für das integrierte Forum PHPBB3 anlegen und ihn einer bestimmten Gruppen zuweisen. Dies soll über ein PHP-Skript geschehen.

Gibt es eine Schnittstelle mit der ich PHPBB sagen kann: Registriere mir den User "Frank" mit Passwort "Hallo" und weise ihn der Gruppe "LeuteSued" zu.
Oder muss ich auf die Klassen von PHPBB zugreifen und die SQLs selbst schreiben? Ich bin doch sicher nicht der Erste der diese Idee hat, oder? :grin:

Vielen Dank
Fluchen ist die einzige Sprache, die alle Programmierer verstehen
Benutzeravatar
Dr.Briefs
Mitglied
Beiträge: 3
Registriert: 04.05.2008 11:14

Beitrag von Dr.Briefs »

Nein du bist nicht der erste der das Anliegen hat, ich gehöre auch dazu... . Nur hab ich noch nirgens eine wirklich brauchbare Lösung gefunden/bekommen.

hier ein paar topics dazu:
Meiner
und ein anderer
Benutzeravatar
h32Lg
Mitglied
Beiträge: 324
Registriert: 04.04.2008 11:05
Wohnort: Bayern
Kontaktdaten:

Beitrag von h32Lg »

eigentlich *g* müsste man doch nur die daten (email, nick, passwort) in die datenbank des forums speichern ;-)

Dazu solltest du aber einige Kenntnisse im Umgang mit PHP sowie fortgeschrittene Kenntnisse im Umgang mit MySQL haben :D

Ansonsten kanns dir passieren, das jemand eine SQL-Injektion versucht ...

Aber wer weiß, vlt gibt es ja auch fertige Scripte dazu ;-)

greets h32Lg 8)
Moralisten sind Leute, die sich dort kratzen wo es andere juckt!
Legt euer Geld in Alkohol an! Wo sonst gibt es mehr als 40% ;-)
Besucht doch auch mal http://www.mircscriptz.de wenn ihr euch für IRC und mIRC-Addons interessiert!
Benutzeravatar
Dr.Briefs
Mitglied
Beiträge: 3
Registriert: 04.05.2008 11:14

Beitrag von Dr.Briefs »

Das hat ein Kumpel von mir, der zwar übelst Ahnung von PHP/MySQL hat aber keine vom phpbb, schon probiert und es lief nicht... .
Benutzeravatar
h32Lg
Mitglied
Beiträge: 324
Registriert: 04.04.2008 11:05
Wohnort: Bayern
Kontaktdaten:

Beitrag von h32Lg »

Dr.Briefs hat geschrieben:Das hat ein Kumpel von mir, der zwar übelst Ahnung von PHP/MySQL hat aber keine vom phpbb, schon probiert und es lief nicht... .
Sinn ?¿

Naja, möglich ist es aber normal *denkz bei gelegenheit schau ichs mir nochmal genauer an ;-)

greets h32Lg 8)
Moralisten sind Leute, die sich dort kratzen wo es andere juckt!
Legt euer Geld in Alkohol an! Wo sonst gibt es mehr als 40% ;-)
Besucht doch auch mal http://www.mircscriptz.de wenn ihr euch für IRC und mIRC-Addons interessiert!
Kalum
Mitglied
Beiträge: 5
Registriert: 30.04.2008 13:53

Geschafft

Beitrag von Kalum »

Also ch habe es jetzt per SQL gemacht und geschafft :grin:

Vielen Dank erstmal für die Antworten.
Ich habe noch ein bißchen den Code durchforstet und folgendes entdeckt.
  • Bei der Überprüfung des Passworts wird auch ein MD5 Hash akzeptiert. Vielleicht sind das ja noch Altlasten aus/wegen PHPBB2
  • Die uique_id für das Feld user_form_salt in der Tabelle phpbb_users wird mit der Funktion unique_id erstellt, die Zufallswerte enthält. Also habe ich mir selbst eine unique_id Funktion gebaut. Das funktioniert.
    PHPBB benutzt diese wohl um den PasswortHash zu erzeugen und zu prüfen. Da ich aber MD5 nutze, brauche ich die sowieso nicht. Habe aber mal eine erstellt :wink:

Also habe ich folgendes gemacht:


Für die Funktion utf8_clean_string(), die ihr gleich brauchen werdet, müsst ihr nur zwei php Dateien von PHPBB inkludieren:

Code: Alles auswählen

include_once("includes/utf/utf_normalizer.php");
 include_once("includes/utf/utf_tools.php");
Vorher noch die globalen Variablen setzen (Das define muss ganz oben im Code stehen):

Code: Alles auswählen

define('IN_PHPBB',true);
$phpEx='php';
global $phpEx;
Dann habe ich folgendes Array mit Userdaten erzeugt (Den Rest der Daten in der Tabelle für einen User müsst ihr nicht angeben. Die werden per Default gesetzt):

Code: Alles auswählen

	function createSqlDataArray($username, $password, $email)
	{
		$usernameUTF8 = utf8_clean_string($username);
		
		$sql_ary = array(
				'username'			=> $username,
				'user_regdate'		=> time(),
				'username_clean'	=> $usernameUTF8,
				'user_password'		=> md5($password),
				'user_passchg'		=> time(),
				'user_email'		=> strtolower($email),
				'user_email_hash'	=> crc32(strtolower($email)) . strlen($email),
				'group_id'			=> 2,
				'user_dateformat'	=> 'D M d, Y g:i a',
				'user_lang'			=> 'de_x_sie',
				'user_style'		=> 1,
				'user_form_salt'	=> unique_id_own($username, $password, $email),
			);		
			return $sql_ary;
	}	
Für meine uique_id_own() habe ich folgendes genommen:

Code: Alles auswählen

substr(md5($username.time()),4 ,16);
dann den hier erzeugten SQL String in die Datenbank jagen (das $sql_ary kommt, wie man sieht, aus der Funktion vorher :wink: ):

Code: Alles auswählen

function createSQL($sql_ary)
	{
		$sqlString='INSERT INTO phpbb_users 
		(
			group_id,
			user_ip,
			user_regdate,
			username,
			username_clean,
			user_password,
			user_passchg,
			user_email,
			user_email_hash,
			user_lang,
			user_style,
			user_dateformat,
			user_form_salt
		)
		
		VALUES(
		'.$sql_ary['group_id'].',
		"127.0.0.1",
		"'.$sql_ary['user_regdate'].'",
		"'.$sql_ary['username'].'",
		"'.$sql_ary['username_clean'].'",
		"'.$sql_ary['user_password'].'",
		"'.$sql_ary['user_passchg'].'",
		"'.$sql_ary['user_email'].'",
		"'.$sql_ary['user_email_hash'].'",
		"'.$sql_ary['user_lang'].'",
		"'.$sql_ary['user_style'].'",
		"'.$sql_ary['user_dateformat'].'",
		"'.$sql_ary['user_form_salt'].'"	
		)';
		
		return $sqlString;
	}
Jetzt ist der User in der Datenbank!

Dann müsst ihr ihn nur noch in eine Gruppe stecken. (Die Wahl der Gruppe bleibt natürlich Euch überlassen! :grin: ) Hier die Standardgruppe
Die ID des erzeugten Users holt ihr Euch vorher bei mysql über mysql_insert_id()

Code: Alles auswählen

	function getGroupSQL($userId)
	{
		return 'INSERT INTO phpbb_user_group (group_id, user_id, group_leader, user_pending) VALUES(2, '.$userId.',0,0)';	
	}
Wenn ihr euch nun in PHPBB einloggt, bekommt ihr folgende Meldung:
Sie wurden erfolgreich eingeloggt
:grin:

Und jetzt viel Spaß.

Würde mich freuen wenn ihr hier im Forum eine Nachricht hinterlasst wenn es geklappt hat.

Bis dann
Fluchen ist die einzige Sprache, die alle Programmierer verstehen
br32768
Mitglied
Beiträge: 2
Registriert: 15.06.2008 13:00

Beitrag von br32768 »

@Kalum: vielen Dank für Deinen äußerst hilfreichen Beitrag

Für phpBB3 gibt es noch folgendes zu beachten:
1. die globale Variable $phpbb_root_path muss analog zu $phpEx gesetzt werden
2. In der Tabelle phpbb_users gibt es das Feld 'user_form_salt' nicht mehr
Kalum
Mitglied
Beiträge: 5
Registriert: 30.04.2008 13:53

Beitrag von Kalum »

Oha, das mit der Variablen $phpbb_root_path stimmt natürlich. Sorry. :-?


Allerdings zu:
2. In der Tabelle phpbb_users gibt es das Feld 'user_form_salt' nicht mehr
...finde ich es seltsam. In meinen Installationen ist es in phpbb_users vorhanden...? Ich habe direkt die Version 3.0.1 installiert.
Was ist jetzt anders? Hast Du ein Update von Version 2 gemacht? Ist das dann so?

Weiß jemand wofür das gut ist und wieso es mal da zu sein scheint und mal nicht?

Bis dann
Kalum
Fluchen ist die einzige Sprache, die alle Programmierer verstehen
Boecki91
Ehemaliges Teammitglied
Beiträge: 4744
Registriert: 18.06.2006 15:21

Beitrag von Boecki91 »

Wegen dem Passwort könntet ihr auch vielleicht mal in der includes/functions.php umschauen, dort findet Ihr das was Ihr sucht...
Standart: Am besten mit beiden Beinen auf dem Boden
Standardmäßig antworte ich nicht auf PMs
br32768
Mitglied
Beiträge: 2
Registriert: 15.06.2008 13:00

Beitrag von br32768 »

@Kalum: vielen Dank für Deine Info. Wir haben noch die Version 3.0 rc5 im Einsatz. Wir werden einen Update auf 3.0.1 fahren. Ich werde das dann noch einmal wieder prüfen.
Antworten

Zurück zu „[3.0.x] Mod Suche/Anfragen“