Unterschiedliche User-IDs an einem Browser

mkoeni1

Erfahrenes Mitglied
Hallo Leute,

ich habe ein Problem und benötige eure Hilfe.
Ich habe ein Login Script an dem ich mich anmelden kann in dem dann eine Session gestartet wird.

PHP:
session_start();

Am Ende zerstöre ich dann die Session mit
PHP:
ob_start (); 

session_start (); 
session_unset (); 
session_destroy (); 

ob_end_flush ();

Hier ist mein Problem, der Code innerhalb der Session. Wie kann ich, wenn sich verschiedene User an einem Rechner anmelden immer nur die Session zerstören die zu genau zB user 1 passt und nicht alle Sessions zerstören wie es bei mir der Fall ist?

Ich habe mir überlegt in der Session einen UNUX timestamp zu speichern:
PHP:
$date = mktime(0,0,0,date('m'), date('d'), date('Y'));
und diesen dann zu killen.


Vielen Dank und Gruß
Matze
 
Jede Session hat auch eine session_id(). Diese kannst Du Usern eindeutig zuweisen. Aber wenn eine Session gekillt wird dann eh nur die des Benutzers der z.B Logout drückt!

Zerstörst Du die Sessions am Ende jetzt jedesmal oder bei einer Logoutfunktion?
Das irritiert mich etwas
PHP:
ob_start (); 

session_start (); 
session_unset (); 
session_destroy (); 

ob_end_flush ();
 
Zuletzt bearbeitet:
Du könntest für jeden User ein Cookie anlegen das halt auf den User benamst ist oder naja du wirst schon wissen wie du das eindeutig zuweisen willst. Allerdings kannst du dann der Session sagen, sie solle die Daten für die Sessionvariablen aus dem Cookie holen. Und wenn sich User 1 ausloggt, dann löscht es das Cookie das dem User 1 zugeordnet ist.
 
@Kahmoon
dieses Zeilen stehen nur auf der Logout Seite. Das Problem ist, dass ich alle angemeldeten User damit kille. Ich möchte aber nur einen User killen (derjenige der den button geklickt hat).

@Igäl
eigentlich möchte ich keine Cookies einsetzen, allerdings wenn diese unvermeidbar sind ...



Vielen Dank und Gruß
Matze
 
Naja du musst ja net gleich die ganze Session des users killen sondern einfach nur die Variabeln, die du als Logintrigger einsetzt...
 
@Igäl,

ich setzte meinen Loggin Trigger auf false per:
PHP:
// login Variable setzen
    $_SESSION['login'] = false;
Damit setzte ich aber die Variable $_SESSION['login'] langfristig für alle User auf false und bei einem anderen User ist diese dann auch false. Ich muss also in meiner Sess Variable den login zu einem speziellen User auf false setzen. zB:
PHP:
session_unregister('user1');

Grundsätzlich: Ich zerstöre damit nicht die Session, die bleibt bei mir auf der Platte, oder?
Somit bleiben andere Benutzer an der Seite angemeldet (Zustand // login Variable setzen
$_SESSION['login'] = true; ), oder?

Ich versuche das Problem einzugrenzen: Jeder der sich an meinem Rechner und dessen Browser anmeldet bekommt per:
PHP:
$benutzerid = session_id();
die gleiche Session ID, oder. Wie kann ich diese von Benutzer zu Benutzer an einem Rechner unterscheiden und gezielt killen?

Vielen Dank und Gruß
Matze
 
Zuletzt bearbeitet:
Hallo @Igäl,

ich denke ich habe die Sessionverwaltung verstanden ;-)
Was mir aber noch ein Rätsel ist, ist folgendes Phänomen. Bei GMX bspw. kann ich mich in die Webmail Umgebung mehrmals anmelden. Sagen wir mal mir in 3 Tabs im FF. Wenn ich mich im Tab 2 abmelde und im Tab 3 wieder vom Ordner Spamverdacht in der Ordner Posteingang wechsle knnt mich das System noch. Wenn ich das allerdings bei mir an meiner Seite ausprobiere kennt mich die Seite nach einem Logout nirgendsmehr.

Wie regelt das GMX? Arbeiten die da mit Cookies?


Vielen Dank und Gruß
Matze
 
Du musst da vermutlich etwas an deinen Vorstellungen revidieren. Die Session ist nichts, was du nachher auf der Platte hast. Eine Session wird auf dem Server erstellt und dem Client wird lediglich eine Session-ID zurückgegeben. Diese ID kannst du dir als Referenz auf die Sessiondaten vorstellen. Mit Hilfe der ID findet der Server die dazugehörigen Daten dann.

Da ich nicht bei GMX arbeite, weiss ich leider nicht, wie die das da machen :) Ist es da so, dass wenn du dich in einem Tab ausloggst, dass du bei den anderen beiden noch eingeloggt bist? Das kann ich mir nur sehr schwer vorstellen.

Mir fällt momentan keine Möglichkeit ein, wie du erreichen könntest, dass drei User an einem Client verschieden behandelt werden können. Der Server weiss leider nicht, dass verschiedene User vor dem Computer sitzen. Er kümmert sich um den Client und der ist der selbe :) Verschiedene Logins sind allerdings ohne weiteres machbar, auch wenn die Personen vom selben PC aus arbeiten.
 
Hallo Igäl,

ich denke ich bin Mittlerweile auf einem guten Weg es zu kapieren.

Mir fällt momentan keine Möglichkeit ein, wie du erreichen könntest, dass drei User an einem Client verschieden behandelt werden können. Der Server weiss leider nicht, dass verschiedene User vor dem Computer sitzen. Er kümmert sich um den Client und der ist der selbe :) Verschiedene Logins sind allerdings ohne weiteres machbar, auch wenn die Personen vom selben PC aus arbeiten.

Sind verschiedene Logins nicht das Gleiche wie drei User. Ich denke du meintest drei mal eingeloggt sein, mit dem Gleichen User.

Hast du mir ein Beispiel wie ich verschiedene Logins in einem Browser unterscheiden kann. Ich habe das was mit Cookies setzen gelesen oder per GET die SID an die URL hängen. Welche Vor- bzw. Nachteile sind hier bekannt. Hättest du ein Beispiel für eine GET Methode. Muss die an jedem Link kleben?

Vielen Dank und Gruß
Matze

sehr komplexes Thema dieses Sessionverwaltung
 
Du möchtest eigentlich ja nur herausfinden, welcher User eingeloggt ist und welcher nicht, oder?

Folgendes Szenario (zur beidseitigen besseren Verständlichkeit):
- John Wayne und Neil Armstrong teilen sich einen Computer
- John hat sich bei deinem System eingeloggt und verlässt den Computer
- Wenn sich Neil jetzt einloggen möchte, dann funktioniert das erst, nachdem entweder die Session abgelaufen ist (das wird vom Server gesteuert. Der Sessiontimeout ist eine Massnahme gegen potentielle Attacken) oder sich John ausloggt und die Session von John manuell vom Script beendet wird

Bei einem Session-Timeout is die Session eh futsch. Dann wird vom Server für Neil eine neue angelegt. Und wenn sich John ausloggt musst du ja nicht gleich die ganze Session plätten. Du kannst auch einfach eine identifier-Variable resetten.

Wenn sich bei mir ein User einloggt, dann wir deine Variable $_SESSION['UserID'] auf die ID des Users gesetzt. Die ist auf false, wenn der User nicht eingeloggt ist. Ist also quasi mein Login-Trigger: Wenn false, dann nicht eingeloggt, wenn Wert vorhanden, eingeloggt. Loggt sich ein User aus, dann wird die Variable wieder auf false gesetzt.
 
Zurück