mysql / php date() problem
Jedes mal wenn ein benutzer auf meiner Seite eingeloggt ist und er sich auf der Seite bewegt. Wird in einer mysql tabelle mit date("d-m-y g:i") gespeichert wann er zuletzt gesehen wurde.
Zusätzlich wurde beim einloggen in der tabelle online auf '1' gesetzt.
Ich will das bei einem user der 15 Minuten keine Aktionen mehr ausgeführt hat das online in der Tabelle wieder auf '0' gesetzt wird und er automatisch ausgeloggt wird.
Mein loginsystem verwendet cookies.
Sind warscheinlich zu wenig informationen, aber man kanns ja trotzdem mal fragen
Zusätzlich wurde beim einloggen in der tabelle online auf '1' gesetzt.
Ich will das bei einem user der 15 Minuten keine Aktionen mehr ausgeführt hat das online in der Tabelle wieder auf '0' gesetzt wird und er automatisch ausgeloggt wird.
Mein loginsystem verwendet cookies.
Sind warscheinlich zu wenig informationen, aber man kanns ja trotzdem mal fragen
Naja, ich würde so Datumsangaben ja generell mit time() speichern - ist dann wesentlich einfach zu bearbeiten.
time() gibt nämlich eine eindeutige Zahlenfolge zurück, die die vergangenen Sekunden seit dem 01.01.1970 angibt.
Dann könnte man z.B.:
Is nur n Beispiel
time() gibt nämlich eine eindeutige Zahlenfolge zurück, die die vergangenen Sekunden seit dem 01.01.1970 angibt.
Dann könnte man z.B.:
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 |
$timeout = 15; // Timeout in Minuten
$timeout = $timeout * 60; // Timeout in Sekunden
if($daten_aus_der_db_als_timestamp < time()-$timeout){
// Datenbankabfrage und setzen des Feldes auf '0'
}
|
Is nur n Beispiel
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$timeout = 15; // Timeout in Minuten
$timeout = $timeout * 60; // Timeout in Sekunden
$result = mysql_query("select * from benutzerdaten WHERE online='1'") or die("Fehler");
if($result)
{
while($row = mysql_fetch_array($result))
{
$online_pruefen = $row["last_move"]; // Wert in 00-00-00 0:00
if($online_pruefen < time()-$timeout)
{
// Datenbankabfrage und setzen des Feldes auf '0'
$query = "UPDATE benutzerdaten SET online='0'";
mysql_query($query);
}
}
mysql_free_result($result);
}
|
Also wenn ich das ganze so mache ist immer jeder offline

Wenn ich das ganze richtig verstehe müsste die Variable $last_move schon in der form date()*60 sein und nicht '00-00-00 0:00' ?
Nachtrag:
Anscheinend ist das mit dem cookie selber löschen wohl eher die bessere Lösung da dann beide Probleme auf einmal bewältigt werden.
Bitte keine Doppelposts! MfG Shurakai
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Shurakai« (22. Mai 2004, 17:35)
Zitat
Original von quibb
Also wenn ich das ganze so mache ist immer jeder offline
Wenn ich das ganze richtig verstehe müsste die Variable $last_move schon in der form date()*60 sein und nicht '00-00-00 0:00' ?
Japp, du musst da bereits mit time() den Unix-Timestamp reinbringen.
Kannst ja einfach mal
|
|
PHP-Quelltext |
1 |
echo time();
|
in ne Datei schreiben um zu sehen wie das dann aussieht - und das dann halt per INSERT in die DB reinbringen. (also dann last_move = '".time()."')
@Shura
Wieso so kompliziert, dafür gibt es doch eine MySQL-Funktion, oder?
Aber das ist ein Detail.
Mfg Fab
Wieso so kompliziert, dafür gibt es doch eine MySQL-Funktion, oder?
|
|
PHP-Quelltext |
1 |
last_move = NOW();
|
Aber das ist ein Detail.
Mfg Fab
-->Vokaline - schneller und effizienter Wörter lernen<-- (kostenlos!)
Ähnliche Themen
-
PHP »-
reload-sperre aufheben
(26. Januar 2008, 17:37)
-
PHP »-
Datum zerlegen *sfg*
(30. Dezember 2007, 22:17)
-
PHP »-
Datumsfunktionen
(21. Februar 2007, 08:11)
-
Datenbanken »-
MySQL-Abfrage: Wert größer als...
(21. August 2005, 14:19)
-
PHP »-
english in deutsch????
(15. März 2004, 15:24)



