Seite 1 von 2
Session-daten von phpBB
Verfasst: 25.11.2006 14:23
von Blacker
huhu

meine php kenntnisse ham sich um einiges erweitert - und nun steh ich vor nem problem.
Also auf meiner neuen Homepage kann man sich einloggen - nach dem einloggen (überprüfen von name und passwort) sieht man dann seinenavatar, den namen und seine emailadresse. enn man jetz aufs forum geht, ist man nicht eingeloggt (was logisch is).
Beim login verwende ich $_SESSION['userid'] und die entspricht die user_id in der phpbb_users. Was verwendet phpbb als $_SESSION ?
Bzw. wie kann ich es so programmieren, dass man im Forum (./forum) auch eingeloggt ist, wenn man sich auf der Homepage (./) einloggt?
Danke :}
Verfasst: 25.11.2006 14:51
von MTV-King
moin,
man kennt sich vlt.
>>>
Wie kann ich das phpBB-Login auf meiner Homepage verwenden? <<<
nutz lieber mal die suchfunktion

Verfasst: 25.11.2006 15:12
von Blacker
Ui hab ich gar nicht gefunden :p
moin mtv

bist ja gar nicht icq on
naja, er loggt sich dann aber nur im Forum ein.
Was ich will, dass man dann auch auf der HP eingeloggt wird. Also bisschen php muss auch dabei sein :S
Verfasst: 25.11.2006 15:47
von MTV-King
Verfasst: 25.11.2006 17:53
von Blacker
das isses auch nicht.
ich brauch eigentlich nur die Session vars, die phpbb beim einloggen registriert...
Also z.b. beim einloggen aufm forum wird in $_SESSION['phpbb_userid'] die Userid, z.b. "20" übertragen, dann müsste ich eigentlich auf der HP nur diese var abfragen, um das zu bekommen.
Aber welche Var ist das?
Verfasst: 25.11.2006 18:47
von MTV-King
dann schau dir doch mal die
includes/sessions.php an

Verfasst: 25.11.2006 18:59
von Blacker
sorry, da drin sind 4 funktionen
> session_begin()
> session_pagestart()
> session_end()
> append_sid()
Wenn ich auf meiner HP mich einlogge, welche session variable muss ch dann weitergeben? sorry, hab in der datei nix brauchbares gefunden..
Verfasst: 25.11.2006 19:00
von gn#36
phpBB arbeitet nicht mit dem PHP Session Management wie du ($_SESSION) sondern verwendet Cookies oder die Adresszeile. Die Daten zu einer Session werden in der sessions tabelle in der Datenbank gespeichert. Auf welche Art und Weise machst du denn den Login auf deiner HP? Vielleicht wäre es einfacher, den Login des Forums in deinem Homepagebereich zu übernehmen, so wie das beschrieben ist in dem Artikel den MTV-King verlinkt hat.
Der Login im Forum wird in der login.php Datei durchgeführt, die solltest du dir eventuell mal ansehen wenn du dein HP System beibehalten willst wirst du einen Teil des Codes hieraus brauchen.
Wenn du dein System beibehalten willst wird eine ganze Menge parallel laufen müssen, du musst die Forum Session aktuell halten auch auf deiner HP (geht einfach mit Forumsfunktionen), du musst alle Links zum Forum mit der SID des eingeloggten Users versehen (sofern dieser keine Cookies verwendet ist er sonst ausgeloggt).
Verfasst: 25.11.2006 19:03
von Blacker
Wie es im Endeffekt aussieht, ist mir reichlich egal. Es sollte nur funktionieren

So siehts aktuell aus:
// EDIT: code entfernt!
Verfasst: 25.11.2006 19:30
von gn#36
Das Skript öffnet SQL Injections Tür und Tor...
Wenn du den Login mit dem Forum verbinden willst solltest du auch den Sicherheitsstandard des Forums beibehalten - eine HP ist immer nur so sicher wie ihr schwächstes Glied.
Ich werde jetzt nicht den Code aus der login.php editieren und posten.
Ich denke so wie du das da gemacht hast könnte man das auch einfach mit der Methode aus der KB machen:
- Du verwendest den Login des Forums und leitest sofort wieder auf deine Homepage weiter (am besten eine spezielle Seite für den Login damit die Seite nicht ausgebremst wird).
- Auf der Homepage fragst du zunächst ab ob in $_SESSION schon die Logindaten vorhanden sind.
- Ist das der Fall ist der User anscheindend schon eingeloggt gewesen als er die Seite betreten hat, es geht weiter wie bisher
- Wenn nicht werden die Standardfunktionen von PHPBB verwendet um an die Logininformationen zu kommen, dann wird abgefragt ob der User eingeloggt ist ($userdata['session_logged_in']) und nicht der anonyme User ist ($userdata['user_id'] == ANONYMOUS oder -1)
- Falls er nicht eingeloggt ist dann zum Login auffordern/weiterleiten
- Falls doch dann die Logindaten von $userdata in $_SESSION übertragen.
- Nicht vergessen an alle Links zum Forum die SID anzuhängen (z.B. mit append_sid())
Auf jeden Fall solltest du diese Stelle in deinem Skript verbessern um SQL Injection zu verhindern:
Mach zumindest sowas wie addslashes.