kostenloser Webspace werbefrei: lima-city


Prüfen ob Session bereits läuft

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    technofan

    Moderator Kostenloser Webspace von technofan

    technofan hat kostenlosen Webspace.

    Hallo Leute

    Möchte ein Loginscript mit allem pipapo machen... klapt soweit auch perfekt... aber ich hab mir da ne Frage gestellt...
    Kann man irgendwie Prüfen, ob eine Session bereits auf dem Server aktiv ist?? also nicht prüfen, ob man selber eingeloggt ist, sondern Prüfen ob bereits jemand anders in meinem Account drinne ist.

    Sollte der Fall auftreten, dass man sich einlogt, obwohl bereits ein anderer in dem Account ist, dann sollen beide gekickt und das Passwort neu gesetzt werden. das neue wird dann an die E-Mail gesendet.

    Wenns dafür nicht direkt so ne Funktion gibt, könnte ich hilfe gebrauchen... habe das bis jetzt immer mit einem emergencypasswort gemacht... bei meiner Methode prüfe ich zuerst ob die onlinetime in der Datenbant > time() - 300 ist wenn nicht gibt der eigentliche Besitzer sein emergencypasswort ein. Sollte das richtig sein, wird in der Datenbank ein wert auf 1 gesetzt. dann habe ich im eingeloggtem Zustand ein Script, dass live prüft, ob dieser Wert 1 oder 0 ist sollte er 1 sein, beendet das script die Session sofort und der "Dieb" ist ausgelogt. danach wird der eigentliche User sofort eingelogt. Weil es aber etwas dauert, bis die Session tatsächlich zerstört ist, ist es schon vorgekommen, dass der Dieb schneller wieder drin war, als der eigentliche Besitzer... ich muss dem Server ja etwas Zeit geben um die Session zu zerstören, deshalb habe ich das Script so geschrieben, dass man erst nach ca. 5 - 10 Sekunden eingelogt wird... mal davon abgesehen ist das auch ziemlich kompliziert...

    wenn es eine Funktion gäbe, die Prüft, ob diese eine Session bereits existiert, dann könnte man das mit einer while-Schleife machen... so lange die Session noch existiert, könnte die Schleife dann weiter prüfen... sobald false auftritt, wird die Schleife ja automatisch abgebrochen und die darin enthaltene Ausgabe wird aktiv... könnte zwar was Leistungsfressend sein, aber der Fall tritt denke ich nicht so oft ein, dass der Server abschmiert. Außerdem wäre es sehr sicher

    Wäre also genial, wenn ihr mir helfen würdet ^^

    Grüße
    Technofan
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. d*************d

    Du meist jetzt in dem Fall das zwei Leute auf unterschiedlichen PCs sich halt nahezu gleichzeitig anmelden oder?
    Wenn ja ist es unmöglich. Jede Session ist computerbezogen und damit kannst du auch nicht prüfen, ob es eine Session mit dem selben Wert schoneinmal gibt.
    Dann musst du beim ein/ausloggen in der Datenbank etwas verändern, was angibt ob sich schon jemand zur Zeit mit dem Passwort angemeldet hat.
  4. Autor dieses Themas

    technofan

    Moderator Kostenloser Webspace von technofan

    technofan hat kostenlosen Webspace.

    das wäre ja die onlinetime... aber gibt's dann ne etwas einfachare Methode als meine??? oder is das schon die einfachste? XD
  5. Wie dragons4thchild schon gesagt hat, werden Sessions nicht auf dem Server sondern auf dem Rechner des Clients in Form von Cookies gespeichert.
    Die einzige Möglichkeit, herauszufinden, ob jemand anderes eingeloggt ist, oder nicht ist mit Hilfe der Datenbank.
    Ich würde dir raten, die Cookies mit einer bestimmten Verfallszeit zu senden.
    Beim Login schreibst du dann die aktuelle Zeit rein, in der der User eingeloggt wurde, beim Logout löschst du diese Zeit, bzw. setzt die auf 0 oder so.
    Wenn sich dann jemand einloggen will, musst du nur noch überprüfen, ob die Zeit des letzten Login eines Users vor der Ablaufzeit liegt, oder nicht.
    Sollte das nicht der Fall sein, dann musst du nun überlegen, was du machst.
    Die eine möglichkeit ist es, zu jedem eingeloggten User die IP zu speichern.
    Das ermöglicht es dir, alle anderen Sessions "auszuschalten" wenn du vor session_start() die IP des Clients abfragst.
    Die andere möglichkeit wäre es, den, der sich neu einloggt nicht zuzulassen, was ich jedoch vermeiden würde, da es ja immer sein kann, dass jemand zum Beispiel den Rechner wechseln muss und den anderen Rechner aus macht ohne sich aus zu loggen. Dann kann er sich auf dem anderen nicht einloggen solange die Session noch aktiv ist.
  6. Autor dieses Themas

    technofan

    Moderator Kostenloser Webspace von technofan

    technofan hat kostenlosen Webspace.

    hmmm, dann scheint meine jetzige Möglichkeit ja die beste zu seun... passwort eingeben, dann kommt man selbst rein, aber der andere wird gekickt...
    am besten bau ich noch ne Abfrage danach ein, oder der User dein PW ändern will oder nicht... denke dann ists perfekt...
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!