Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 5%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 392 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

quibb

Foren As

Dabei seit: 12.05.2004

Beiträge: 88

 

1 Zum Seitenanfang

Samstag, 22. Mai 2004, 14:51

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

:P
 

Shurakai

Foren Gott

Dabei seit: 05.02.2003

Beiträge: 2 181

 

2 Zum Seitenanfang

Samstag, 22. Mai 2004, 14:58

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

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

NiBurhe

Kaiser

Dabei seit: 07.04.2003

Beiträge: 1 292

 

3 Zum Seitenanfang

Samstag, 22. Mai 2004, 15:14

oder du verwendst einfach ein Cookie, der sich nach 15 min selber löscht und wenn der Cookie nicht mehr da ist, dann wird er eintrag auf null gesetzt.
 

quibb

Foren As

Dabei seit: 12.05.2004

Beiträge: 88

 

4 Zum Seitenanfang

Samstag, 22. Mai 2004, 15:17

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

 

Shurakai

Foren Gott

Dabei seit: 05.02.2003

Beiträge: 2 181

 

5 Zum Seitenanfang

Samstag, 22. Mai 2004, 17:33

Zitat

Original von quibb
Also wenn ich das ganze so mache ist immer jeder offline :P
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()."')
 

Fab

Lebende Foren Legende

Dabei seit: 30.03.2003

Beiträge: 1 635

 

6 Zum Seitenanfang

Sonntag, 23. Mai 2004, 10:51

@Shura

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
 

quibb

Foren As

Dabei seit: 12.05.2004

Beiträge: 88

 

7 Zum Seitenanfang

Dienstag, 25. Mai 2004, 21:04

So hab endlich ne Lösung im PHP Board gefunden die auch ich kappiere! :)).

Danke für den Tip mit NOW(), man lern doch nie aus, auch wenn man schon ganze 2 Wochen sql benutzt 8)

Gruesse
quibb
 

Ähnliche Themen