PHP & SQL - Session und wer ist online etc...



  • Habe mal ne Frage...

    habe ne website in php geschrieben die mit einer DB (MySQL) arbeitet...

    Man kann sich anmelden, die user kommen in eine user-table und diese user können schallplatten besitzen und online stellen und somit gibt es auch eine vinyl-table...

    Das ganze habe ich mit sessions realisiert, so das man nur vinyls erstellen kann wenn man sich eingeloggt hat.

    Dazu nun ein paar Fragen:

    1. Wie kann ich eine Session nach z.b. 20 Minuten Inaktivität ungültig machen, so dass man sich neu einloggen muss ? Bis jetzt bin ich auch nach 3 Tagen noch immer eingeloggt wenn ich den PC neu hochfahre... Wichtig wäre nur nicht generell XX Minuten,sondern wirklich nur bei Inaktivität.

    2. Ich würde gerne auf der Website darstellen wer gerade eingeloggt war, und wann der letzt login von jemanden war, wie mache ich das ?

    (Oder in ner Mitgliedtabelle die mitglieder die grad einloggt sind kennzeichnen) Vllt. ne Art Hilfstabelle wo immer einer eingetragen wird wenn man sich einloggt,die dann immer ausgelesen wird, wo man gelöscht wird, wenn ausgeloggt ? Nur dazu müsste ich aus meiner session ja alle gerade eingeloggten namen bekommen oder so ähnlich ?!

    Wäre cool wenn mir jemand helfen könnte 🙂



  • zu 1:

    die aktuelle sekundenzeit abspeichern mit 20 minuten drauf

    $loginzeit = time() + 60*20;
    

    und beim nächsten seitenzugriff und dem überprüfen der berechtigung schaun, ob die zeit noch gültig ist

    wenn ja, neu setzen (damit er ab jetzt wieder 20 minuten hat)
    wenn nein, rauswerfen, daten löschen



  • zu 2. in deiner Benutzertabelle legst du zwei zusätzliche Felder namens "logged_in" und "logged_date" oder so an. Wenn der User sich einloggt, speicherst du einfach die aktuelle Uhrzeit in "logged_date" Somit weißt wann er sich das letzte mal eingeloggt hat. In der Spalte "logged_in" speicherst du entweder true für ist gerade eingeloggt oder false für ist nicht eingeloggt.

    MfG CSS



  • Wann die Sessionungültig wird kannst du bei PHP einstellen. Dies ändert aber nichts daran das du den Status in der DB hast.
    Dieses Problem hat jeder der dies machen möchte und nicht bedenkt das Web ein verbindungsloses Protokoll ist. Dh du kannst dir nie sicher sein das der User inaktiv ist weil er ja deine Seite laden kann und ließt dann die Seite, geht dann essen, spielen, Pop...., etc.


Anmelden zum Antworten