[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
HowTo: Ein Login für mehrere Tools (PHPBB, Wiki, etc...) - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
aunib
Beiträge: 9
Registriert: 29. Aug 2006, 13:29

HowTo: Ein Login für mehrere Tools (PHPBB, Wiki, etc...)

30. Aug 2006, 09:09

Hallo!

Da ich gerade dieses Problem für mich gelöst habe, stelle ich die Lösung mal hier rein falls es jemanden interessiert.

Da wir einen Mitgliederbereich haben, der aus mehreren verschiedennen Applikationen besteht, ist das problem aufgetreten, dass der Benutzer sich unzählige Male anmelden mus um den Bereich zu nutzen.
Meine Lösung bezieht sich im Moment auf PHPBB und MediaWiki, ist aber auf sämtliche Logins (auch Redaxo) auf dem Server anwendbar!

Voraussetzung ist, dass bei allen Logins die gleichen Benutzer vorhanden sind. (für Wiki gibts da die
PHPBB-Users_Integration)
Für das synchronisieren der Benutzertabellen werde ich später mal noch ein Skript schreiben...

Vom Prinzip her ist der Login sehr simpel: wir erstellen ein Login Formular, und beim absenden simuliert PHP allen logins, dass die Daten von "ihrem eigenen" Formular kämen.

Als erstes erstellen wir ein Login-Formular, typischerweise mit den Feldern "benutzer", "passwort" und "autologin".
Vom verarbeitungsskript aus müssen wir nun mehrere POST-anfragen starten. Da dies mit PHP relativ kompliziert ist, holt man sich am besten die PHP Snoopy-Klasse: http://sourceforge.net/projects/snoopy/

nach einbinden der Klasse, müssen wir einige Variablen definieren:

Code: Alles auswählen

$url = "http://www.meinedomain.ch/wiki/index.php?title=Spezial:Userlogin&action=submitlogin&returnto=Hauptseite";
$vars["wpName"] = $benutzer;
$vars["wpPassword"] = $passwort;
$vars["wpRemember"] = $autologin;
$vars["wpLoginattempt"] = 'Anmelden';
Die Werte können alle vom Original Loginformular des Tools (in diesem Fall Wiki) genommen werden (die Eingabefeldnamen und das Formular-Ziel)

nun muss das ganze nur noch abgesendet werden:

Code: Alles auswählen

$snoopy = new Snoopy();
$snoopy->submit($url, $vars);
Die Login Prozedur des Wikis hat nun, sofern Benutzer und Passwort stimmten, eine Session gestartet.

Um den Benutzer zu erkennen wird beim Login immer ein Cookie gesetzt. Da wir die Anfrage aber nur simuliert haben, ist dieses Cookie auch nicht beim eigentlichen Benutzer gesetzt worden; es befindet sich noch immer in einer Variable der Snoopy-klasse und muss nun noch beim Benutzer gesetzt werden:

Code: Alles auswählen

//Cookies beim User registrieren
foreach($snoopy->cookies as $key=>$value){
 setcookie($key, $value ,time()+3600,'/');
}
Somit ist der Login beendet: wenn man nun das Wiki besucht, ist man schon eingeloggt. Das kann nacheinander für beliebig viele Logins wiederholt werden!

hier noch das Ganze im Zusammenhang:

Code: Alles auswählen

<?php
include("Snoopy/Snoopy.class.php"); //Zugriffsklasse um Browser zu "simulieren"

 /***************************************************************************
 * Login in Wiki
***************************************************************************/
//Formularfelder als Variablen an die Loginseite schicken 
$url = "http://www.meinedomain.ch/wiki/index.php?title=Spezial:Userlogin&action=submitlogin&returnto=Hauptseite";
$vars["wpName"] = $benutzer;
$vars["wpPassword"] = $passwort;
$vars["wpRemember"] = $autologin;
$vars["wpLoginattempt"] = 'Anmelden';
$snoopy = new Snoopy();
$snoopy->submit($url, $vars);
//print($snoopy->results); //Rückgabe der Loginseite

//Cookies beim User registrieren
foreach($snoopy->cookies as $key=>$value){
 setcookie($key, $value ,time()+3600,'/');
}
 /***************************************************************************
 * Login in Wiki Ende
***************************************************************************/
  /***************************************************************************
 * Login in Forum
***************************************************************************/
//Formularfelder als Variablen an die Loginseite schicken 
$url = "http://www.meinedomain.ch/forum/login.php";
$vars["username"] = $benutzer;
$vars["password"] = $passwort;
$vars["autologin"] = $autologin;
$vars["login"] = 'Login';
$snoopy = new Snoopy();
$snoopy->submit($url, $vars);
//print($snoopy->results);//Rückgabe der Loginseite

//Cookies beim User registrieren
foreach($snoopy->cookies as $key=>$value){
 setcookie($key, $value ,time()+3600,'/');
}
 /***************************************************************************
 * Login in Forum Ende
***************************************************************************/
?> 

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

30. Aug 2006, 09:52

Hi aunib,

danke für dieses Tolle Howto!

Es wäre super, wenn du im Wiki eine Kategorie HowTos anlegen könntest und dort dann in einem Artikel deinen Eintrag reinnimmst...

Wenn Einträge aus dem Wiki ausgereift sind, können diese dann auch evtl in die Dokumentation mit einfließen (was aber bei deinem sehr speziellen Script, wahrscheinlich nicht passieren wird :))

Gruß,
Markus

aunib
Beiträge: 9
Registriert: 29. Aug 2006, 13:29

30. Aug 2006, 10:13

Hallo

ok, ich werde die Kategorie und den Artikel im Wiki anlegen, sobald ich dazu komme :)

gruss Aunib

aunib
Beiträge: 9
Registriert: 29. Aug 2006, 13:29

Im Wiki eingefügt

30. Aug 2006, 10:56

ich habe mal den Bereich "HowTos" erstellt im Wiki http://wiki3.redaxo.de/index.php?n=R3.HowTos und meine Anleitung hinzugefügt, ok?

gruss Aunib

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

30. Aug 2006, 11:54

Hi Aunib,

großes Dankeschön!

Gruß,
Markus

macks
Beiträge: 5
Registriert: 5. Okt 2006, 15:36

21. Mär 2007, 20:02

Hallo!

Bleibt noch anzumerken, dass der multiple login nicht mit Fremdservern harmoniert. Ich kann (vermutlich aus Sicherheitsgründen) keine cookies für eine fremde domain setzen.

Benutzeravatar
gfc
Beiträge: 152
Registriert: 27. Dez 2005, 22:46
Kontaktdaten: Website

26. Mär 2007, 22:27

macks hat geschrieben:Ich kann (vermutlich aus Sicherheitsgründen) keine cookies für eine fremde domain setzen.
HOFFENTLICH!

Das ist nicht möglich und sollte es NIE NIE NIE werden.
http://www.parkrocker.net/ - Die Rock im Park Community

mhahn
Beiträge: 2
Registriert: 11. Jan 2008, 11:21

Login für phpBB3

12. Jan 2008, 16:40

Nachdem ich mit Hilfe dieser Anleitung den Login für phpBB 2 zum Laufen bekommen habe, wollte ich das gleiche für phpBB3 implementieren.

Der Code:

Code: Alles auswählen

$url = "http://www.meine-domain.de/forum/ucp.php?mode=login";
$vars["username"] = $FORM['loginname'];
$vars["password"] = $FORM['loginpasswort'];

$vars["autologin"] = 0;
$vars["login"] = 'Login';
$snoopy = new Snoopy();
$snoopy->submit($url, $vars);
		
//Cookies beim User registrieren
foreach($snoopy->cookies as $key=>$value){
  setcookie($key, $value ,time()+3600,'/');
}
Leider funktioniert das aber nicht. Wenn ich mir die Loginseite mit

Code: Alles auswählen

print($snoopy->results); 
ausgeben lasse, ist mein User zwar erstmal eingeloggt ("Sie wurden erfolgreich angemeldet"), aber nach der dann folgenden Weiterleitung nicht mehr. Auch wenn ich das Forum nochmal in einem eigenen Fenster öffne - kein User ist angemeldet.

Um dem Fehler auf die Spur zu kommen, habe ich mir testweise die Variable $snoopy ausgeben lassen und festgestellt, dass das Array $snoopy->cookies leer ist, d.h. es werden keine Cookies gesetzt.

Wer kann mir einen Tipp geben, hat evt. jemand den Remote-Login für phpBB3 schon implementiert?

Vielen Dank im voraus,
Micha

gedon
Beiträge: 2
Registriert: 6. Aug 2009, 23:30

6. Aug 2009, 23:35

hi, bin durch zufall hier gelandet und konnte mein glück gar net fassen
seit 3 wochen versuche ich nun dolphin und phpbb3 mit nur einem login zu versehn und da find ich dat

naja zu früh gefreut... wie mein vorredner habe ich das selbe prob
zwar sagt er mir ich bin angemeldet, bin jedoch beim weiterleiten wieder abgemeldet


hat es inzwischen vlt irgendwer hinbekommen sich mit snoopy bei phpbb3 anzumelden ?


mfg gedon (bin neu ^^)

gedon
Beiträge: 2
Registriert: 6. Aug 2009, 23:30

11. Aug 2009, 15:12

hmm wirklich keiner ?

Benutzeravatar
TInKim
Beiträge: 420
Registriert: 23. Mär 2007, 16:16
Wohnort: Kiel
Kontaktdaten: Website

11. Aug 2009, 19:42

gfc hat geschrieben:
macks hat geschrieben:Ich kann (vermutlich aus Sicherheitsgründen) keine cookies für eine fremde domain setzen.
HOFFENTLICH!

Das ist nicht möglich und sollte es NIE NIE NIE werden.
Das wäre in der Tat ganz schlimm.
Man kann aber zum Beispiel mit CURL-Klassen den Server programmieren (z. B. mit einem Cron), dass der sich bei n Diensten irgendwo einloggt.

Zurück zu „Sonstiges“