Eigenen Login verwenden, welche Session Vars muss ich setzen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
timo_le
Mitglied
Beiträge: 18
Registriert: 12.10.2004 10:28

Eigenen Login verwenden, welche Session Vars muss ich setzen

Beitrag von timo_le »

Hallo Jungz

Folgende Frage:

Möchte meinen eigenen Login verwenden, wenn sich Benutzer bei mir anmelden sollen diese aber auch gleich im Forum angemeldet werden,
meine Idee wäre, die Session Variabeln der Forum Anmeldung bei meiner Anmeldung gleich mitzusetzen und die nötigen Einträge in der DB zu machen. Ist dies möglich?? Welche Login Session Variabeln werden gesetzt und welche Einträge werden in die DB gemacht bei einer Anmeldung? Werden bei einer Abmeldung irgendwelche Daten aus der DB wieder gelöscht?

Mit freundlichen Grüßen
Neuer zufriedener Nutzer von phpBB
Timo
timo_le
Mitglied
Beiträge: 18
Registriert: 12.10.2004 10:28

leider nicht

Beitrag von timo_le »

Habe diese Variante schon getestet, nein hilft mir nicht wirklich, da ich die Login Kontrolle nicht an phpBB abgeben will bzw. kann.

Es soll einfach so sein, dass ich bei meinem Login die nötigen Session Daten vom Forum in meiner Anmeldung selbst setze und die nötigen DB Eintragungen vornehme. Wechselt der Benutzer zum Forum ist er dann Automatisch angemeldet.
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Re: leider nicht

Beitrag von Blutgerinsel »

timo_le hat geschrieben:Habe diese Variante schon getestet, nein hilft mir nicht wirklich, da ich die Login Kontrolle nicht an phpBB abgeben will bzw. kann.

Es soll einfach so sein, dass ich bei meinem Login die nötigen Session Daten vom Forum in meiner Anmeldung selbst setze und die nötigen DB Eintragungen vornehme. Wechselt der Benutzer zum Forum ist er dann Automatisch angemeldet.
Das geht nur wenn du das Forum Cookie via Page setzst. Dann funktioniert die von dir beschriebene Methode.....

Hab bei mir u.A. diese Schnittstelle auch mal grob implementiert.......
timo_le
Mitglied
Beiträge: 18
Registriert: 12.10.2004 10:28

Es geht doch

Beitrag von timo_le »

Falls es noch jemanden Interesiert habe das Problem gelöst.

Folgendermaßen läuft es ab, ein User meldet sich auf meiner Page an, an meinen System mit meiner Benutzerverwaltung ohne das PHPBB Einfluss darauf hat. So er kann jetzt alles machen was er machen will…. Klickt er den Link PHPBB gelangt er auf die Indexseite von PHPBB und ist dort Automatisch angemeldet.

Genauso wollte ich es……

Der Schlüssel dazu lag in der login.php im Prinzip melde ich den Benutzer Automatisch über eine modifizierte login.php an. Muss noch ein wenig testen vor allen mit der logout Geschichte und die Sache auch irgendwie andersrum hinbekommen also wenn er sich doch erst im Forum anmeldet das er auch bei mir angemeldet ist.

Es ist jedoch mit Arbeit verbunden deshalb veröffentliche ich den gesamten Code nur wenn dazu Interesse besteht und erst wenn ich alle Aspekte genau geklärt habe.
mephiztophelez
Mitglied
Beiträge: 4
Registriert: 18.10.2004 16:45

Beitrag von mephiztophelez »

Es besteht großes Interesse :)
Hab dir auch schon ne Mail zukommen lassen, trotzdem wäre das hier öffentlich auch gut, weil man kaum Infos zu dieser Problematik findet. Die meisten wollen das PHPBB Login für ihre eigene Seite benutzen. Jedoch gibt es auch Leute wie uns, die schon ein funktionierendes Benutzerverwaltungssystem haben und den Login gleichzeitig auch im PHPBB durchzuführen, damit sich der User nicht getrennt einloggen muss.
Ich habe das Einloggen auch schon hinbekommen mit Hilfe der phpbb_login Klasse von phpclasses.org jedoch funktioniert aus irgendeinem Grunde der Autologin nicht.
Cookieeinstellungen sind korrekt, da der Autologin funktioniert, wenn man sich doch manuell über das Forum einloggt.
Falls jemand dazu eine Idee hat...
Gibt es irgendwo eine Anleitung wie so ein Loginprozess ausschaut, uud welche Codezeilen für was verantwortlich sind? Also dass man sich den Loginprozess einfach nachbauen kann und das in sein eigenes Skript einbindet?


Christoph
timo_le
Mitglied
Beiträge: 18
Registriert: 12.10.2004 10:28

Autologin über Cookies???

Beitrag von timo_le »

Solltest du das Forum direkt ansteuern Funktioniert der Autologin über Cookie wunderbar.
Allerdings wird der Autologin über Cookie überflüssig da man ja durch die eigene Anmeldung Automatisch angemeldet wird, will man den Autologin über Cookie auf der eigenen Seite realisieren muss man dies in seiner eigenen Benutzerverwaltung realisieren, was ja kein Problem sein dürfte einfach MD5 verschlüsseln und Cookie setzen, denke ich mal. Ich bin aber kein Freund von Cookies, durch diese Vieren Hysterie der Leute sind die eh meist ausgeschaltet.


Im Moment melde ich mich per Link Automatisch an, das heißt erst wenn ich auf den Link PHPBB klicke, will jetzt versuchen die Anmeldung schon zu realisieren beim Login in die eigene Benutzerverwaltung, kein Problem. Dann noch das Logout und das Login umgekehrt. Funktioniert das gibt’s die Codes will mich ja nicht zum Gespött der Leute machen und hier ne nicht funktionierende Variante veröffentlichen.

Timo
mephiztophelez
Mitglied
Beiträge: 4
Registriert: 18.10.2004 16:45

Beitrag von mephiztophelez »

Danke für die Antwort.
Das Autologin im eigenen System gibts schon, deswegen sollte es auch beim phpbb funzen. Jedoch tuts das momentan noch nicht. Ich weiss nur nicht warum.
mephiztophelez
Mitglied
Beiträge: 4
Registriert: 18.10.2004 16:45

Login im phpbb von eigener Benutzverwaltung/Portal

Beitrag von mephiztophelez »

Da ich schon oft gehört habe, dass einige User das gleiche suchen, jedoch nie so richtig darauf eingegangen wurde will ich mal versuchen meinen Lösungsweg zu posten:

Wir betreiben auch ein selbstprogrammiertes Portal mit eigener Userverwaltung. Selbstverständlich haben wir das PHPBB als Board im Einsatz und das schon seit mehr als 3 Jahren.

Um die Benutzung der Seite so einfach wie möglich zu machen, ist es zwingend notwendig, dass die User sich nicht zweimal getrennt einloggen müssen. Das wäre unzumutbar.

Bis zu unserem Relaunch vor einer Woche hatten wir die mit einer manipulierten login.php des phpbb gelöst, was jedoch den Nachteil hatte, dass Updates des PHPBB immer ein Akt waren, da die Änderungen jedesmal durchgeführt werden mussten.

Ich suchte nach einer Lösung, die das eleganter und mit weniger Aufwand erledigt und stieß beim googlen auf eine Klasse, die das ganze erledigen soll. Die Klasse heißt PHPBB_LOGIN class und ist über
http://www.phpclasses.org/browse/package/1532.html zu beziehen.

Die Klasse kann einfach eingebunden werden und erwartet als Parameter die UserID des einzuloggenden Forums-Users.

Ich habe mir die Klasse dann so umgestrickt, dass ich anstatt der UserID den Usernamen übergebe und dass die Klasse sich darum kümmert die dazugehörige UserID rauszufinden.

Das hat dann auch auf Anhieb super funktioniert, jedoch hatte ich bis heute Probleme mit dem Autologin. Ich konnte das vorerst nur durch eine Manipulation an der phpBB2/includes/sessions.php beheben, was aber auch noch nicht das gelbe vom Ei ist.


Meine modifizierte phpbblogin.php sieht jetzt so aus:

Code: Alles auswählen

<?php
/*

 * PHPBB_Login allows you to integrate your own login system
 * with phpBB. Meaning that you can have one login valid across
 * both your website and phpBB.
 *
 * To take full advantage of this PHPBB_Login class you just
 * need to modify your own login system to include a call
 * to the relevant methods in here.
 *
 * This system is reliant on the website username being exactly
 * the same as the phpBB username. To insure this, I recommend
 * disabling the ability to change usernames from within the
 * phpBB admin control panel.
 *
 * Distributed under the LGPL license:
 * http://www.gnu.org/licenses/lgpl.html
 *
 * Duncan Gough
 * 3rdSense.com
 *
 * Home  http://www.suttree.com
 * Work  http://www.3rdsense.com
 * Play! http://www.playaholics.com
 */



class PHPBB_Login
{
	function PHPBB_Login()
	{

	}



	function login($phpbb_user_name)
	{
		global $db, $board_config;
		global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;

		// Setup the phpbb environment and then
		// run through the phpbb login process

		// You may need to change the following line to reflect
		// your phpBB installation.
		// ersetze FORUM_ROOT durch den absoluten Pfad zu deinem Forum
		require_once(FORUM_ROOT . "/config.php" );

		define("IN_PHPBB",true);

		// You may need to change the following line to reflect
		// your phpBB installation.
		$phpbb_root_path	= FORUM_ROOT;

		require_once($phpbb_root_path . "extension.inc");
		require_once($phpbb_root_path . "common.php");



		/*** modifiziert, um die userID zum Usernamen rauszufinden ***/
		$sql	=  "SELECT *";
		$sql	.= " FROM " . $table_prefix . "users u";
		$sql	.= " WHERE username = '" . $phpbb_user_name . "'";
		$phpbb_user_id	= @mysql_result(@mysql_query($sql),0,"user_id");
		/************/



		return session_begin($phpbb_user_id,$user_ip,PAGE_INDEX,FALSE,TRUE);
	}


	
	function logout($session_id,$phpbb_user_name)
	{
		global $db, $lang, $board_config;
		global $HTTP_COOKIE_VARS, $HTTP_GET_VARS, $SID;

		// Setup the phpbb environment and then
		// run through the phpbb login process

		// You may need to change the following line to reflect
		// your phpBB installation.
		require_once(FORUM_ROOT . "/config.php" );

		define("IN_PHPBB",true);

        	// You may need to change the following line to reflect
        	// your phpBB installation.
        	$phpbb_root_path	= FORUM_ROOT;

        	require_once($phpbb_root_path . "extension.inc");
        	require_once($phpbb_root_path . "common.php");



		/*** modifiziert ***/
		$sql	=  "SELECT *";
		$sql	.= " FROM " . $table_prefix . "users u";
		$sql	.= " WHERE username = '" . $phpbb_user_name . "'";

		$phpbb_user_id	= mysql_result(@mysql_query($sql),0,"user_id");
		/************/



		session_end($session_id,$phpbb_user_id);

		// session_end doesn't seem to get rid of these cookies,
		// so we'll do it here just in to make certain.
		setcookie($board_config[ "cookie_name" ] . "_sid",	"",time() - 3600," ");
		setcookie($board_config[ "cookie_name" ] . "_mysql",	"",time() - 3600," ");
	}
}
?>
Zu beachten ist, dass ich bevor ich die Klasse eingebunden habe, schon eine Datenbankverbindung hergestellt habe, denn die muss ja wärend des

Funktionsaufrufs schon bestehen.


Um die Klasse jetzt zu benutzen, fügt ihr in eurem Skript an der der User eingeloggt wird diesen Code ein:

Code: Alles auswählen

		// PHPBB-Loginklasse instanziieren
		$phpBB	= new PHPBB_Login();
		// im Forum einloggen
		$session_id = $phpBB->login($login_username);
Beim Ausloggen ist es fast ähnlich:

Code: Alles auswählen

$phpBB	= new PHPBB_Login();
$phpBB->logout(session_id(),@mysql_result($query,0,"username"));


Ich hoffe euch damit eine grobe Anleitung gegeben zu haben wie man den Login von einem externen eigenen Portal mit dem PhpBB Login zusammenlegen kann,
so dass der User sich nur ein einziges Mal einloggen braucht. Wie man sieht, kann man hier weiterhin sein eigenes Loginsystem benutzen.

Das ganze hat garantiert auch Nachteile, von daher freu ich mich auf Feedback und vielleicht hat ja der ein oder andere noch Ideen wie man das optimieren kann. Wie gesagt, hat der Autologin jedoch erst funktioniert , nach dem ich ihn in der sessions.php erzwungen habe. Mal schaun wie ich das am besten löse.

Christoph
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

hmm cool die Klasse erspart mir Arbeit und ich kann die einfach anzapfen ist ja mal brauchbar :wink:

[edit]leider ist mein Registrierungsmail noch net da hmmm[/edit]

Ach ja falls jemand von euch bereits eine kleine Mod erstellt bzgl. Registrierung, User löschen wäre es cool wenn mir da jemand einen Rohbau zur Verfügung stellen könnte......

Hatte hier nämlich einen easymod kompatiblen bereits gemacht welcher meine Page Berechtigungsusertable bei Boardregistrierungen gefüllt hat im Suff als ich mein altes Board gelöscht hatte nicht gesichert :oops:

Und jetzt wieder die ganzen Stellen suchen und was Easymod kompatibles drausmachen :roll:
Antworten

Zurück zu „Coding & Technik“