phpBB Usersystem in eigener Seite nutzen



  • Also im Forum bin ich angemeldet wie gewünscht mit Auologin, hier die Ausgabe von Userdata:

    0: 2
    user_id: 2
    1: 1
    user_active: 1
    2: mab
    username: mab
    3: 4dfe6a0876758f70e6279f8d8c2efcde
    user_password: 4dfe6a0876758f70e6279f8d8c2efcde
    4: 1066043389
    user_session_time: 1066043389
    5: 0
    user_session_page: 0
    6: 1066042997
    user_lastvisit: 1066043389
    7: 1066042969
    user_regdate: 1066042969
    8: 1
    user_level: 1
    9: 1

    Wenn ich nun in der Seite mir Userdata ausgeben lasse kommt folgendes:

    0: 2
    user_id: ANONYMOUS
    1: 1
    user_active: 1
    2: mab
    username: mab
    3: 4dfe6a0876758f70e6279f8d8c2efcde
    user_password: 4dfe6a0876758f70e6279f8d8c2efcde
    4: 1066044649
    user_session_time: 1066044649
    5: 0
    user_session_page: 0
    6: 1066044638
    user_lastvisit: 1066044638
    7: 1066042969
    user_regdate: 1066042969
    8: 1
    user_level: 1
    9: 1
    ...
    session_id: 4af2da35be34dc9013c30d8a57275aba
    session_ip: 00000000
    session_user_id: ANONYMOUS
    session_logged_in: 0
    session_page: 0
    session_start: 1066044655
    session_time: 1066044655

    Keine Ahnung warum das so ist, sehe das Problem einfach nicht, aber der Fehler muß wohl daran liegen, dass er $sessiondata['autologinid']) in der Seite nicht hat. Aber keine Ahnung waran das liegt 😕



  • Was steht denn in $cookiedomain bzw. $board_config['cookie_domain']´? Evtl. ist das Cookie nämlich im Stammordner einfach nur nicht mehr gültig



  • Hm, Cookiepath hat einfach nur den Wer "/". Auf meinem Server ist das Forum in einem Unterverzichnis namens ./forum/. Aber ich habe mir gerade die Cookievariablen nochmal ausgeben lassen und folgendes bekommen:

    SessionID: 64855d3ff2677c168f841239b7b5ec45
    Sessiondata: autologinid: 4dfe6a0876758f70e6279f8d8c2efcde
    Sessiondata: userid: 2

    Also sieht erstmal richtig aus, doch wenn ich dann den Code weiterlaufen lasse bin ich trotzdem als ANONYMOUS gesetzt 😕
    Langsam verlier ich hier meinen Verstand 😞



  • Also ich hab mir nochmal den Code genau angesehen und der Fehler liegt irgendwo in der Funktion session_init(). Dort habe ich vergessen die Variablen $cookiename usw. als global zu deklarieren, aber das hilft auch nicht weiter. Folgende Zeile wird als FALSE zurückgegeben, obwohl $cookiename usw gegeben sind und die Cookies in der common.inc.php korrekt identifiziert werden:

    if (isset(HTTP\_COOKIE\_VARS[cookiename . '_sid']) || isset(HTTP\_COOKIE\_VARS[cookiename . '_data']) )



  • Ich habe mal ein paar Statusausgaben eingefügt und das Ergebnis ist eindeutig:

    Common: Session_id aus Cookies: 5302caefb7961ac63985e3114ddd8947
    Common: Userdata aus der Datenbank anhand der Cookies: 2
    Common: IP-Check: 7f0000 == 000000 ???
    Common: Session_init wird aufgerufen mit $user_id = 2

    Session_init: Start der Funktion session_init()

    Session_init: $cookiename ist gegeben: phpbb2mysql
    Session_init: Cookies nicht vorhanden und Veriablen sind leer
    Session_init: Session_ID folglich aus Cookies:
    Session_init: User_id ist nicht ANONYMOUS, da korrekt aus Common übergeben: 2
    Session_init: $auto_create = 1
    Session_init: Sessiondata[autologinid] nicht vorhanden oder Account nicht aktiviert - User_id wird ANONYMOUS gesetzt
    Session_init: Neue Session soll angelegt werden für folgende User_id: ANONYMOUS

    Warning: Cannot add header information - headers already sent by (output started at d:\homepage\aktuell\ski-world\include\common.inc.php:33) in d:\homepage\aktuell\ski-world\include\functions.inc.php on line 191

    Warning: Cannot add header information - headers already sent by (output started at d:\homepage\aktuell\ski-world\include\common.inc.php:33) in d:\homepage\aktuell\ski-world\include\functions.inc.php on line 192

    Session_init: Cookies werden gesetzt (phpbb2mysql_data und phpbb2mysql_sid) mit $sessiondata und $session_id
    Session_init: $userdata wird zurückgegeben an common.inc.php
    Common: Session_init wurde aufgerufen und Userdata sollte nun vorhanden sein:

    0: 2
    user_id: ANONYMOUS
    1: 1
    user_active: 1
    2: mab
    username: mab
    3: 4dfe6a0876758f70e6279f8d8c2efcde
    user_password: 4dfe6a0876758f70e6279f8d8c2efcde
    4: 1066051051

    Irgendwie kann er die Cookies in der Session_init nicht mehr lesen, keine Ahnung warum, hat jemand ne Ahnung, ich sehe absolut keinen Fehler 😮



  • global $HTTP_COOKIE_VARS;
    

    $HTTP_COOKIE_VARS ist nämlich im Gegensatz zu $_COOKIE (ab PHP >= 4.1.0 vorhanden) nicht autoglobal 😉



  • Juhhhhhhhhhuuuuuu 🙂 🙂 🙂
    Es funktioniert, danke flenders mein Retter. Und der ganze Rummel nur wegen soner Kleinigkeit 🙄

    @MrChat: Ich habe jetzt übrigens den Code hier im Thread so editiert, dass er funktioniert 😉



  • thx thx 🙂

    ich werd es mal testen *gg*

    cya



  • hmm also ich schlag mich grade damit rum, weil ich es jetz eigentlich für die site auch gebrauchen könnte 😞

    leider raff ich das ganz und gar net...
    also einloggen tu ich mich per dieser login.php von phpBB..
    d.h. ich übergene dieser Datei die parameter username und password..

    allerdings soll er mich jetz nit direkt auf die phpbb - seite umleiten sondern wieder auf die hauptseite..

    und dann muss ich ja die userdaten auslesen können..
    mehr will ich ja nicht 😞

    aber ich bin scheinbar zu blöd dazu *heul*

    cya



  • Also ich habe mir eigentlich alles selber geschrieben, bringt ein paar Vorteile, so verzichte ich auf viel unnützen Code den ich auf der Seite im Gegensatz zum Forum sowieso nicht brauche. Aber der Login ist ja garnicht mal so das Thema, den kann man immer noch machen, wichtig ist das du in jeder Seite deiner HP den User erst identifizierst, ich habe dafür 3 Dateien gewählt wie gesagt, eine Datei mit den wichtigen Variablen (phpBB-Prefix, Datenbankverbindungen, usw.), eine Datei in der alle wichtigen Funktionen enthalten sind (also z.B. Konfigurationsdaten des Forum auslesen) und dann noch die Common.inc.php in der der Benutzer identifiziert wird. Alle 3 Dateien werden in jede Seite eingebunden. Im Grunde genommen brauchst du dir bloß meinen Code ein wenig umschreiben und in dir zurechtlegen, man kann das alles auch in einer Datei erledigen. Falls du konkrete Hilfe brauchst sag es, bei mir funktioniert jetzt alles perfekt 🙂



  • also sind die drei dateien, die du hier angegeben hast NICHT die, die auch das forum benützt, sondern die, die du dir selber zurecht geschrieben hast...
    d.h. ich copy & paste mir die in meine funktions.inc.php / definitions.inc.php etc... und dann überall einbinden...

    jetz wird mir das klarer *gg*

    ausprobiern 🙂

    cya



  • *grml*

    geht net..

    ich bin scheinbar wirklich minderbemittelt *gg*

    na ja.. mal weiter suchen + probiern..

    cya



  • so ich habs jetzt soweit hingekriegt, fehlten nur noch 2 globale definitionen! (unter anderem $HTTP_COOKIE_VARS)

    aber die funktion get_ip(); funktioniert bei mir nicht richtig, d.h. er gibt mir immer nur 000000 zurück 😞

    deshalb kann er auch keine session initialisieren.. *grml*

    cya

    so das funktioniert jetz auch... geht aber immer noch nicht so, wie ich es will:
    $userdata["session_logged_in"] ist leider noch 0...
    und die $userdata["user_id"] ist auch noch nicht so, wie sie sein soll.. 😞

    aber das liegt wohl an folgender zeile:

    $userdata = session_init($user_id, $user_ip, 0, TRUE)
    

    setze ich hier anstatt TRUE für $auto_create FALSE, dann funktioniert es einwandfrei.

    nur was bewirkt denn $auto_create????

    cya



  • Klar funktioniert es mit Auto_create False immer, weil dann $login automatisch auf 1 gesetzt wird:

    ...
            if ($user_id != ANONYMOUS)
            {
                    $auto_login_key = $userdata['user_password'];
                    if($auto_create)
                    {
                            if(isset($sessiondata['autologinid']) && $userdata['user_active'] )
                            {
                                    // Automatischer Login
                                    if($sessiondata['autologinid'] == $auto_login_key)
                                    {
                                            // Auto-LoginID matches password
                                            $login = 1;
                                            $enable_autologin = 1;
                                    }
                                    else
                                    {
                                            // No match; don't login, set as anonymous user
                                            $login = 0;
                                            $enable_autologin = 0;
                                            $user_id = $userdata['user_id'] = ANONYMOUS;
                                    }
                            }
                            else
                            {
                                    // AutoLogin ist nicht gesetzt. Kein Login, als ANONYMOUS setzten
                                    $login = 0;
                                    $enable_autologin = 0;
                                    $user_id = $userdata['user_id'] = ANONYMOUS;
                            }
                    }
                    else
                    {
                            $login = 1;
                    }
            }
            else
            {
                    $login = 0;
                    $enable_autologin = 0;
            }
    ...
    

    Schau mal ob die Cookies korrekt ausgelesen werden, dort lag bei mir der Knackpunkt. Den genauen Sinn von $auto_create habe ich auch noch nicht verstanden, aber der Code sollte automatisch korrekt laufen, wenn wie gesagt die Cookies korrekt ausgelesen werden.



  • also die cookies werden jetzt mit sicherheit korrekt ausgelesen, aber trotzdem funktioniert der code nicht 😞

    muss mal genau schaun, aber was wichtiges hab ich darin nicht entdeckt *gg*

    cya



  • so, falls du noch hilfe bei einem loginscript für die site brauchst, ruf mich *Gg*
    ich hab meins eben fertig geschrieben und es funktioniert auch einwandfrei 🙂

    falls es einen interessiert:

    http://www.coderszone.de 😃 😃

    cya



  • übrigens obiger code, der bei mir angeblich nicht funzt, geht doch! und er ist auch wichtig... wennn ich den nicht benutze, ist das autologin nicht mehr gültig, d.h. wenn ich die site schliesse und wieder neu öffne bin ich (jedenfalls im forum) ausgelooggt

    cya


Anmelden zum Antworten