Zum Inhalt springen

PHP und SQL Abfrage


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

$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 :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D

Danke für den Lösungsansatz, werde es nacher mal ausprobieren!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...