Automatisch einloggen ?

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.
STF-DIR
Mitglied
Beiträge: 4
Registriert: 09.02.2009 10:47

Automatisch einloggen ?

Beitrag von STF-DIR »

Hallo,

nachdem ich es nun endlich geschafft habe ein kleines Script zu schreiben was automatische einen User in der DB anlegt versuche ich vergebens das Forum durch einen Link aufzurufen so das man automatisch eingeloggt ist.
Zur Erklärung:
Ich habe das Forum in ein CMS eingebunden und möchte natürlich nicht das sich die User 2 mal registireren müssen oder sich im Forum abmelden oder anmelden können.
Einfach Forum aufrufen und dann muß man automatisch registriert sein.
Gleich vorweg .. include.... könnte ein Problem werden. In dem CMS gibt es eine classe namens Template !!


Kann mir jemand weiterhelfen ?
Ich hab keinen Ansatz, leider.

Matthias
piero
Mitglied
Beiträge: 476
Registriert: 10.11.2008 17:15
Wohnort: Schweiz

Re: Automatisch einloggen ?

Beitrag von piero »

STF-DIR hat geschrieben:Ich hab keinen Ansatz, leider.
Ansätze gibts meistens hier: http://area51.phpbb.com/docs/code/
und hier: http://google.de

Einloggen kannst du den User mittels auth::login()

STF-DIR hat geschrieben:Gleich vorweg .. include.... könnte ein Problem werden. In dem CMS gibt es eine classe namens Template !!
Wo ist das Problem? Hat phpBB doch auch :P
Die sollte hier aber nicht dazwischenfunken...
STF-DIR
Mitglied
Beiträge: 4
Registriert: 09.02.2009 10:47

Re: Automatisch einloggen ?

Beitrag von STF-DIR »

Hallo,

ich wollte eigentlich nicht den gesamten Quelltext des Bordes verstehen lernen.
War ja nur ne Frage.

Matthias
piero
Mitglied
Beiträge: 476
Registriert: 10.11.2008 17:15
Wohnort: Schweiz

Re: Automatisch einloggen ?

Beitrag von piero »

STF-DIR hat geschrieben:War ja nur ne Frage.
Sorry, wenns falsch rübergekommen ist ;)


Also etwas konkreter:

Du musst die Datei "commons.php" vom phpBB irgendwo includen (zB. in die Loginfunktion der CMS)
Dann packst du folgenden Befehl auch noch in dieselbe Funktion rein:

Code: Alles auswählen

$auth->login($username, $password); 
(Die Variablen $username und $password musst du evtl. ersetzen durch die Variablen der CMS)

Dann kannst du's mal so testen ;)
STF-DIR
Mitglied
Beiträge: 4
Registriert: 09.02.2009 10:47

Re: Automatisch einloggen ?

Beitrag von STF-DIR »

Hallo,

ok, werd ich mal testen.
Ich glaube aber da gibts wieder probleme weil beide ( CMS und phpBB3 ) eine classe namens Template haben :-(

Kann man das mit einer Session lösen ?
Ich hab da nicht so viel Ahnung davon.

Ich rufe jedenfalls aus dem CMS, an einer stelle wo ich Username und Password für beides kenne,
meine login.php auf, die das Login in das phpBB3 macht.
Diese Datei braucht allerdings Username und Password übergeben,
Also die müsste so aufgerufen werden :

login.php?username=bla&password=blabla

Das ist allerdings nicht wirklich elegant.

Kann man eine session erstellen und darin dann Username und password speichern und dann nur die session id an das login.php übergeben ?
Man könnte doch dann dort wieder die beiden Variablen aus der session holen oder ?

Falls das geht kannst Du mir bitte aufzeigen wie ich das machen müsste ?

Danke
Matthias
piero
Mitglied
Beiträge: 476
Registriert: 10.11.2008 17:15
Wohnort: Schweiz

Re: Automatisch einloggen ?

Beitrag von piero »

STF-DIR hat geschrieben:Ich glaube aber da gibts wieder probleme weil beide ( CMS und phpBB3 ) eine classe namens Template haben :-(
ja, doch nun wirds mir klar was du meinst^^

welche CMS benutzt du denn?
STF-DIR hat geschrieben:Falls das geht kannst Du mir bitte aufzeigen wie ich das machen müsste ?
Die Idee mit Sessionvariablen zu arbeiten ist gut...

Bei der Loginmethode deiner CMS fügst du folgenden Code ein:

Code: Alles auswählen

$_SESSION['phpbb_login_user'] = $username; 
WICHTIG: Diese Zuweisung darf erst geschehen, wenn ein Login erfolgreich war, sonst könnte sich jeder ins Forum einloggen ;)
Von dem hängt die ganze Sicherheit deines Boardes ab^^

Dann öffnest du die Datei "includes/auth.php" von phpBB3.
In dieser Datei suchst du dir die letzte schliessende Klammer "}" und machst vor dieser folgendes rein:

Code: Alles auswählen

function login_without_password($username, $autologin = false, $viewonline = 1) {
global $config, $db;

$sql = 'SELECT user_password FROM ' . USERS_TABLE . "WHERE username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);

if($db->sql_affectedrows() == 1) {
$password = $row['user_password'];

} else {
$password = null;
}
$db->sql_freeresult($result);

return $this->login($username, $password, $autologin, $viewonline);
} 
(hab den Code nicht getestet...)


Dann musst du noch die Datei "common.php" vom phpBB3 öffnen
dort suchst du die Zeichenfolge "?>" (am Ende der Datei) raus und fügst eine Zeile vornedran das ein:

Code: Alles auswählen

if(isset($_SESSION['phpbb_login_user']) AND !empty($_SESSION['phpbb_login_user']) ) {
$auth->login_without_password($_SESSION['phpbb_login_user']);
unset($_SESSION['phpbb_login_user']);
}
 
(ebenfalls ungetestet)


Der User wird dann erst eingeloggt, wenn er das Forum besucht...

Ausserdem wird er nach einer bestimmten Zeit wieder ausgeloggt... Wenn in der CMS ein autologin möglich ist, dann müssten wir noch eine zweite Session-Variable machen (sonst wird der User im Forum immer ausgeloggt und in der CMS nicht)
STF-DIR
Mitglied
Beiträge: 4
Registriert: 09.02.2009 10:47

Re: Automatisch einloggen ?

Beitrag von STF-DIR »

Hallo,

ich danke Dir für die ausführliche Antwort.
Werd ich , nachdem ich ausgeschlafen habe, noch testen.

Noch ne kleine Frage zu

$_SESSION['phpbb_login_user'] = $username;

Wenn ich das im Login Script des CMS mache und dann wird eine andere PHP Seite aufgerufen , vergisst dann nicht php die Session Variable ?

Das CMS ist übrigens phpVMS : http://www.phpvms.net/

Matthias
piero
Mitglied
Beiträge: 476
Registriert: 10.11.2008 17:15
Wohnort: Schweiz

Re: Automatisch einloggen ?

Beitrag von piero »

STF-DIR hat geschrieben:Noch ne kleine Frage zu

$_SESSION['phpbb_login_user'] = $username;

Wenn ich das im Login Script des CMS mache und dann wird eine andere PHP Seite aufgerufen , vergisst dann nicht php die Session Variable ?
Was sind Sessions?

Wenn php die Variable "vergessen" täte, dann hätte es ja auch keinen Sinn, diese hier zu setzen ;)
schumiel
Mitglied
Beiträge: 131
Registriert: 27.10.2009 12:58

Re: Automatisch einloggen ?

Beitrag von schumiel »

@piero:
Wenn ich das Script so einbinde, dann zeigt er mir zwar an, dass ich eingeloggt bin bei "Wer ist online", aber einloggen tut es mich damit nicht. Was mach ich verkehrt?
schumiel
Mitglied
Beiträge: 131
Registriert: 27.10.2009 12:58

Re: Automatisch einloggen ?

Beitrag von schumiel »

Ich habe nun das probiert:
http://www.lpi-clan.de/viewtopic.php?f=26&t=3550

Das Login an sich funktioniert.

Wechsle ich dann ins Forum, dann bin ich nicht eingeloggt. :(
Jedoch werde ich bei "Wer ist online?" angezeigt.

Fehlt noch irgendwas?
Antworten

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