Session Problem
Guten Tag, bin neu hier und würde mich über ein wenig Hilfe freuen.
Problematik: ********************************************************************** *** Ich arbeite im Moment an einem Browsergame und will die Sicherheit hinter dem Login ein wenig verfeinern. Darum habe ich vor Usern zu verbieten, dass sie sich parallel ein 2. Mal mit dem gleichen Account anmelden können. (Würde zu Problemen beim zb. schreiben in die DB führen) Ich bin zu folgender Lösung gekommen: Bei erfolgreichem Anmelden erstelle und sichere ich die jetzige session_id() unter der ID des users in der SQL Datenbank und kann somit in der darauf folgenden ingame.php anprüfen, ob die jetzige, der in der Datenbank (quasi von damals beim einloggen) entspricht. Loggt sich also ein 2. User unter dem gleichen Account ein bekommt dieser eine NEUE session_ID(), diese wird darauf in die Datenbank geschrieben. So. Wenn jetzt User 1 die Seite refresht kommt es wie gesagt zu einem neuen Abprüfen. User 1 vergleicht seine session_ID() mit der in der Datenbank. Nun steht aber eine neue drinnen. Er wird darauf informiert, dass sich ein 2. User angemeldet hat und wird gekickt. Ich denke soweit ist alles zu verstehen. Mein Problem: ********************************************************************** *** Sobald User 1 seinen Browser refresht und es zur Prüfung kommt: übernimmt User 1 tatsächlich den Wert der session_id() von User2 !! Somit sind Browser session_id() und Datenbank session_id() gleich und der User darf passieren. Kleiner Ausschnitt aus der login.php PHP-Code:
angefangen. Warum bekommt User 1 dennoch nach refresh der Seite plötzlich die neue zugewiesen? Seltsamerweise werden auch Rohstoffe, Ingame-Name etc kopiert =/ PS: Da ich schon einen ganzen Aufsatz geschrieben habe, wollte ich nicht auch noch dutzende PHP Zeilen einbinden. Für mehr Code (zur Verständlichkeit) bitte melden, dann poste ich zb. die komplette Login.php und Ingame.php |
AW: Session Problem
Warum machst du es dir nicht so schön, wie du es in der Einleitung beschrieben hast..
Ich sehe dein Problem nicht. PHP-Code:
PS: Das SID Gehampel kannst du dir sparen. Es gibt keine Notwendigkeit die SID zu wechseln. Und wenn doch, dann ist session_regenerate() durchaus angemessen. |
AW: Session Problem
Mein Problem ist glaube ich, dass meine bzw auch deine Abfrage nie funktionieren kann...
Weil sobald ich die Seite von User 1 refreshe er schon die neue Session ID hat und erst dann in die Abfrage springt... Anscheinend habe ich momentan eine Denksprerre... Vielleicht sollte ich erwähnen, dass sich das Problem nicht nur bei gleichen sondern auch bei fremden Accounts zeigt... Fritz2000 wird mit allen attributen wie name, rohstoffe, SID zu Mustermann101 mit komplett anderen attributen... kann es daran liegen, dass die Session nie komplett zerstört wird, sondern aktualisiert ? Oo |
AW: Session Problem
Zitat:
|
AW: Session Problem
Hier die problematische Login.php:
PHP-Code:
PHP-Code:
[mod: link entfernt] Ihr seht oben in der ingame.php den aktuellen sID Status. Einfach mit admin einloggen, danach mit RTG_Leks... und darauf den admin mal refreshen Hoffe das hilft, gruß |
AW: Session Problem
Zitat:
Machs doch anders rum. |
AW: Session Problem
Wie? Ich verstehe nicht ganz wie du dir das vorstellst... Kannst du mir auf die Sprünge helfen?
Um in die Abfrage zu springen muss die Seite doch erstmal geladen werden und da is ja das problem... Da ist die Session_ID dann ne andere.. Oder hab ich was übersehen *verwirrt* gruß |
AW: Session Problem
Die sessionid ändert sich nur, wenn du session_regenerate_id() aufrufst. Oder händisch eine setzt. Lass das erstmal sein.
Denke logisch! Was must du als erstes tun? session_start() ! Du prüfst ob in $_SESSION eine Userid liegt. Wenn nein: Loginvorgang Ja: prüfen ob sessionid zu userid passt Passt? Nein: Logout und loginmaske. Ja: alles ist gut |
AW: Session Problem
aber wie hindert das jemanden ein 2. mal einzuloggen?
|
AW: Session Problem
Gar nicht!!
Wer sich frisch einloggt, hat gewonnen. Der alte steht im Regen. Hat ausgespielt. Zitat:
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:22:56 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.