Steffen3:16 Geschrieben 5. Oktober 2006 Teilen Geschrieben 5. Oktober 2006 Hallo zusammen, ich hoffe ihr könnt mir helfen, aber das denke ich mal. Ich hab ein kleines LoginSystem am laufen, Werte wann jemand das letzte mal da war, werden in einer Spalte in der Datenbank gespeichert die 'lastl' (last login) heißt. Da Leute sich auch vergessen auszuloggen, und ich keine Möglichkeit habe CronJobs über meine Datenbank laufen zu lassen, wollte ich das bei jedem Aufruf der gesicherten Seite auslesen ob noch jemand online ist, und wie lange schon. Wenn der user eine gewisse Zeit online ist, soll er automatisch ausgeloggt werden (bzw. einfach in der DB den Status 0 bekommen für ausgeloggt). Das Format in der Datenbank für den Last Login wird so gespeichert: tt.mm.jjjj hh:mm Ich hoffe ihr versteh mein ANliegen, sonst einfach nochmal nachhaken Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SirVival Geschrieben 5. Oktober 2006 Teilen Geschrieben 5. Oktober 2006 $lastlogin = time() + 600 ; für 10 Minuten timeout. und dann bei jedem Seitenaufruf für jeden User prüfen ob $lastlogin < time(); und für jeden angemeldeten Benutzer den Wert in der Datenbank aktualisieren mit time() + 600 ; bitte mit entsprechendem php Code zur Datenbankabfrage etc selbst schreiebn EDIT: Anmerkung - Datum immer als timestamp speichern und nicht schon als formatierstes Datum. Ist leichter damit zu arbeiten Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 5. Oktober 2006 Teilen Geschrieben 5. Oktober 2006 sessions gehen nicht ? lass den last login drin und über die sessions regelst du wann das abläuft. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Steffen3:16 Geschrieben 5. Oktober 2006 Autor Teilen Geschrieben 5. Oktober 2006 Ja das mit dem timestamp das habe ich erst später selbst gemerkt, aber erst als schon alles lief und alles implementiert war Aber das mit time dürfte glaub ich nicht funktionieren, weil ich hab ja das komplette datum und die zeit drin also kann ich da ja nicht einfach den Wert in der Spalte um 600 sekunden erhöhen oder? Sessions sind bei mir aktiv! Frage, wie kann ich das mit sessions regeln? Da muss ja dann auch irgendwie was in der Datenbank passieren, damit die, die sich vergessen haben auszuloggen automatisch auf 0 (=ausgeloggt) gesetzt werden. Ich denke mal da haben Sessions ziemlich wenig mit am Hut oder? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 5. Oktober 2006 Teilen Geschrieben 5. Oktober 2006 wofür braucht man ein feld in der DB mit dem logout flag ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Steffen3:16 Geschrieben 5. Oktober 2006 Autor Teilen Geschrieben 5. Oktober 2006 Weil ich es gerne vom Logout flag abghängig machen würde. Oder erklär es mir wie ich das mit den Sessions mache das die automatisch in der 'internen Seite' ausgeloggt werden. Ob die Eingeloggt sind oder nicht, steht in einem ´STATUS´ Feld in der Datenbank und das möchte ich gerne verändern wenn derjenige länger als eine gewisse Zeit nicht onlne war! Lg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 5. Oktober 2006 Teilen Geschrieben 5. Oktober 2006 Sessions sind genau dafür gemacht, wegen der sicherheit die du brauchst. schau mal hier http://de2.php.net/manual/de/ref.session.php Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Steffen3:16 Geschrieben 5. Oktober 2006 Autor Teilen Geschrieben 5. Oktober 2006 Die Beiträge liebe ich ja! Also wenn du mal gelesen hättest, benutze ich Session. Nur mit denen kann ich wenig anfangen, wenn ein Wert in einer Datenbank einfach nur geändert werden soll und das nur anhand des "Timestamp" in der lastl Spalte. Sessions habe ich bei mir untergebracht, das ist ja für die Sicherheit die du ja eben schon erwähnt hast, aber was will ich damit!? Ich glaube du verstehst nicht ganz was ich meine oder:confused: Oder vielleicht drück dich mal genauer aus, was du jetzt meinst was ich brauche! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ich1987 Geschrieben 6. Oktober 2006 Teilen Geschrieben 6. Oktober 2006 moin, um zu gucken wann irgendwer sich zum letzen mal angemeldet hat, brauchst du einfach nur am anfang wenn er sich einloggt den Aktuellen Timestamp in Datenbank schreiben, und das wars. Oder willst du die Zeit haben nachdem er net mehr auf der Seite ist oder wie ? Verstehe erhlich gesagt das anligen nicht ganz:rolleyes: MfG ich Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Steffen3:16 Geschrieben 6. Oktober 2006 Autor Teilen Geschrieben 6. Oktober 2006 Ja richtig, den Timestamp wenn er sich einloggt, das Speicher ich ja unter lastl (lastlogin), da steht aber eben "tt.mm.jjjj hh:mm" drin. So dann gibts aber noch "Status" 1 = eingeloggt und 0 = ausgeloggt Den Status brauch ich dafür das andere sehen können wer gerade eingeloggt ist, also einfach nen ganzen normalen Select Befehl. Wenn jemand auf den Ausloggbutton drückt, dann zerstöre ich die Session und setze den Status auf 0! Wenn jemand sich vergessen hat auszuloggen dann steht der Status immer noch auf 1! Also sehen andere noch das derjenige eingeloggt ist! (Man bedenke das ich leider kein Cronjob machen kann) Mein Lösungsweg ist jetzt das ich wenn sich jemand einloggt, einfach nochmal kurz die Datensätze durchgehe von allen mitgliedern, gucke bei wem der Status = 1 ist, und dann mir den Timestamp also ´lastl´ angucke. Wenn der Timestamp schon einige Zeit zurückliegt, sagen wir 5 oder 6 Stunden, dann soll der Status automatisch auf 0 gesetzt werden. Also sozusagen ein "Work-a-round" um einen Cronjob. Wie aber kann ich dieses in ein SQL Befehl einbauen, ich will ja auf das "lastl" zurückgreifen da steht aber wiederrum Datum UND Uhrzeit drin! Hoffe das klappt jetzt besser vom Verständnis Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Steffen3:16 Geschrieben 10. Oktober 2006 Autor Teilen Geschrieben 10. Oktober 2006 Hat keiner eine Möglichkeit wie ich das am besten machen kann? Vielleicht mit einem Select Befehl der erst mal alle abfragt die den Status 1 haben und dann bei diesen den ´lastl´ (last login) durchguckt wann die das letzte mal aktiv waren. Wenn diese Zeit dann größer ist las 6 Stunden beispielsweise, soll der den Status von denjenigen auf 0 setzen, man man ich weiß es echt net, wie man das in SQL wiedergeben soll! Zu Hüüülllfffe Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
boeseSchwingung Geschrieben 10. Oktober 2006 Teilen Geschrieben 10. Oktober 2006 Ich hab dazu noch eine Frage. In welchem Datentyp ist denn dein Datumsdings da gespeichert? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Steffen3:16 Geschrieben 10. Oktober 2006 Autor Teilen Geschrieben 10. Oktober 2006 Hollá ich denke mal du meinst den lastl der ist leider nur in einem varchar datentyp gespeichert. Ich denke mal es wär von vornerei besser gewesen wenn ich nen Timestamp genommen hätte. Hast du dennoch ne Lösung? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
boeseSchwingung Geschrieben 10. Oktober 2006 Teilen Geschrieben 10. Oktober 2006 Ich weiß nicht genau ob es laufen würde. Kann ich jetzt leider auch nicht teste, bin auf der Arbeit. Was ist wenn du einen zweiten "String" erzeugen lässt, der quasi 6 Stunden älter ist. Also wenn wir jetzt den 10.10.2006 14:32 haben dann wäre das 10.10.2006 08:32 Und dann ein UPDATE auf alle Einträge schickst bei denen der Anmeldestatus = 1 und das lastl < dem neuen "String" ist? Ich weiß jetzt nur nicht wie das mit dem größer, kleiner Vergleich im Varchar aussieht. Aber das währe jetzt das einzige was mir so spontan einfallen würde dazu. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Steffen3:16 Geschrieben 10. Oktober 2006 Autor Teilen Geschrieben 10. Oktober 2006 Ein ziemlich guter Ansatz der Lösung, aber ich glaube mit dem Ich weiß jetzt nur nicht wie das mit dem größer, kleiner Vergleich im Varchar aussieht. wirst du Recht haben, meiner Meinung kann man glaub ich nicht 2 Strings miteinander auf größer oder kleiner vergleichen, oder? Hoffe hier gibt es noch andere die das hier lesen Danke für den Lösungsansatz, werde es nacher mal ausprobieren! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.