Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

Sessions zeitabhänig destroyen?

Diskussion: Sessions zeitabhänig destroyen? im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige So hab mal was gegoolt aber nix gefunden. Komisch eig. Nun aber zu meiner Frage, kann man session die ...

Antwort
Alt 25.04.07, 17:37   #1 (permalink)
 
Benutzerbild von reaLInsanity
 
Registriert seit: 10.01.06
reaLInsanity Leistung: Facit NTK
reaLInsanity eine Nachricht über ICQ schicken reaLInsanity eine Nachricht über AIM schicken reaLInsanity eine Nachricht über Yahoo! schicken
Likes: 0
Standard Sessions zeitabhänig destroyen?

Anzeige

So hab mal was gegoolt aber nix gefunden. Komisch eig.
Nun aber zu meiner Frage, kann man session die mit session_start() angelegt wurden nach einer bestimmten Zeit zerstören lassen? von mir aus ein tag oder so oder 3 std....

Als ich will die sessions benutzen um einen user einzuloggen. Jedoch verlässt er die Seite soll er ausgeloggt werden und nicht mehr inner Online Spalte angezeigt werden...

wäre cool wenn mir da jmd. mal helfen könnte.

reaLInsanity ist offline   Mit Zitat antworten
Alt 25.04.07, 18:06   #2 (permalink)
Senior Member
 
Benutzerbild von Chakky
 
Registriert seit: 28.10.03
Chakky Leistung: 8086
Chakky eine Nachricht über ICQ schicken
Likes: 110
Standard

mmh du könntest die letzte aktivität des counters mit schreiben

also wenn der user eine seite aufruft setzt du einen timestamp und bei der ausgabe überprüfst wie alt der timestamp ist ->älter als 10min ->user wahrscheinlich nicht online auf seite ->wird nicht mehr als online gelistet

kannst dafür einen extra cookie nutzn oder einfacher schreibst es mit in die session rein
__________________
cu
Chakky

we are dreaming in digital
we are living in realtime
we are thinking in binary
we are talking in IP
welcome to our world
Chakky ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 25.04.07, 18:17   #3 (permalink)
 
Benutzerbild von Eydeet
 
Registriert seit: 14.04.06
Eydeet Leistung: Facit NTK
Likes: 4
Standard

Die Sessions werden nach einer bestimmten Zeit automatisch gelöscht. Nach wie vielen Sekunden der Inaktivität der Server aufräumen soll, ist in der php.ini festgelegt (session.gc_maxlifetime).

Wenn du eine Session manuell beenden willst (z.B. Abmeldung) kannst du session_destroy() benutzen.
Eydeet ist offline   Mit Zitat antworten
Alt 26.04.07, 10:00   #4 (permalink)
Themenstarter
 
Benutzerbild von reaLInsanity
 
Registriert seit: 10.01.06
reaLInsanity Leistung: Facit NTK
reaLInsanity eine Nachricht über ICQ schicken reaLInsanity eine Nachricht über AIM schicken reaLInsanity eine Nachricht über Yahoo! schicken
Likes: 0
Standard

Joar ich hab das mal so ausprobiert, wie folgt (nur wichtige programmzeilen):

index.php:
PHP-Code:
if(isset($_GET['action'])=="Login"){
    
setcookie("login""eingeloggt"time() + (60*60));} 

    
session_start(); 
login.php:
PHP-Code:
if($_REQUEST['action']=="logout"){
    
$sql "UPDATE user SET eingeloggt=0 WHERE ID='".$_SESSION['user_id']."'";
    
$result mysql_query($sql) OR die(mysql_error());
        unset(
$_SESSION['user_id']);
        
session_destroy();}
        
elseif(!isset(
$_COOKIE['login'])) {
     
$sql "UPDATE user SET eingeloggt=0 WHERE ID='".$_SESSION['user_id']."'";
     unset(
$_SESSION['user_id']);
     
session_destroy();
    
$result mysql_query($sql) OR die(mysql_error());} 
Klappt auch alles soweit, sprich der suer wird ausgeloggt nach einer bestimmten Zeit. jedoch verlässt er die Seite (Browser zugemacht, PC runter gefahren etc.) ist der User nach wie vor als Online gekennzeichnet, sprich in der DB steht bei eingeloggt noch die 1.

Wie kann ich das so machen, bzw. überprüfen, und dann den User austragen aus der Onlinestatistik?
reaLInsanity ist offline   Mit Zitat antworten
Alt 26.04.07, 10:52   #5 (permalink)
Moderator
 
Benutzerbild von lightsaver
 
Registriert seit: 19.06.06
lightsaver Leistung: Pentium Ilightsaver Leistung: Pentium Ilightsaver Leistung: Pentium I
Likes: 52
Standard

da der server genau dieses nicht mitbekommt geht das nur über eine zeitabfrage wie weiter oben erwähnt. bei mir mache ich das immer so, die index.php immer in der db nach dem timestamp der letzten aktivität guckt und sollte die bei jemandem einen bestimmten wert überschreiten, dann wird der aus der db entfernt und somit auch nicht mehr angezeigt. du könntest vielleicht auch regelmäßig die seite automatisch neu laden lassen. wenn der browser geschlossen wurde funktioniert der reload nicht mehr und du bekommst das indirekt mit.
lightsaver ist offline   Mit Zitat antworten
Alt 26.04.07, 10:59   #6 (permalink)
Themenstarter
 
Benutzerbild von reaLInsanity
 
Registriert seit: 10.01.06
reaLInsanity Leistung: Facit NTK
reaLInsanity eine Nachricht über ICQ schicken reaLInsanity eine Nachricht über AIM schicken reaLInsanity eine Nachricht über Yahoo! schicken
Likes: 0
Standard

Also zum verständnis
in der DB nen timestamp einfügen.. diesen dann übrprüfen, ob der timestamp größer ist als beisspielswiese ne std. Dann soller den User aus der DB schmeißen?

Aber das geht ja eig. auch nur wenn der User den Reload betätigt oder?!
Weil ich das ja abhängig von der Userid mach die in die Session eingetragen wurde.

Wie könnte ich denn den autom. Reload hervorrufen, und dann überprüfen, was du bereits sagtest lightsaver?
reaLInsanity ist offline   Mit Zitat antworten
Alt 26.04.07, 11:08   #7 (permalink)
Senior Member
 
Benutzerbild von Chakky
 
Registriert seit: 28.10.03
Chakky Leistung: 8086
Chakky eine Nachricht über ICQ schicken
Likes: 110
Standard

warum automatischer reload?

sobald IRGENDJEMAND auf deine seite geht wird das php scrip eh mit geladen und das prüft dann ob der timestamp grö0er als ne stunde is schmeist das raus und weite runten im script ->wird dann die noch vorhanden user ausgegeben
__________________
cu
Chakky

we are dreaming in digital
we are living in realtime
we are thinking in binary
we are talking in IP
welcome to our world
Chakky ist offline   Mit Zitat antworten
Alt 26.04.07, 11:12   #8 (permalink)
Moderator
 
Benutzerbild von lightsaver
 
Registriert seit: 19.06.06
lightsaver Leistung: Pentium Ilightsaver Leistung: Pentium Ilightsaver Leistung: Pentium I
Likes: 52
Standard

naja, die überprüfung wegen den timestamps kann ja jeder machen. beim aufruf der index.php guckt diese einfach in der db nach allen einträgen mit timestamp > 60 min (zum beispiel) da brauchst du die id ja nicht.
ansonsten hast du ja für jeden benutzer eine session. damit ja die id. wenn der jenige ne neue seite aufruft (falls du mehr als nur die index.php hast) oder halt die index.php nochmal aufruft, reloaded, dann ist das ja eine tätigkeit. und auf jeder dieser seiten brauchst du einfach eine funktion, die den timestamp in der db aktuallisiert. so wie du den mal eingetragen hast geht das auch hier.
den reload könntest du z.b. über ein meta refresh (content dann einfach weglassen) realisieren. dabei wird die index.php neu geladen und somit auch alle funktionen also auch das update des timestamp durchgeführt.

@chakky:

der reload war nur eine idee, um user noch als online zu erkennen, auch wenn die nichts tun. je nachdem, wie man die zeitspanne für den reload wählt (z.b. 1 min oder so) kann man die online-anzeige recht aktuell halten. wer aktiv ist wird wohl unter diesem wert bleiben und damit wird die seite nicht neu geladen (wert muss natürlich angepasst werden zum inhalt der seite und zur erwarteten aktivität), aber man erkennt, ob der browser noch offen ist. genau das ist nämlich das problem. wenn er eine aktivität macht und dann direkt den browser schließt wird er noch die ganze zeit als online geführt bis der timestamp abgelaufen ist. und genau in diese richtung ging ja auch die frage ansonsten ist der reload natürlich nichts notwendiges
lightsaver ist offline   Mit Zitat antworten
Alt 26.04.07, 11:24   #9 (permalink)
Senior Member
 
Benutzerbild von Chakky
 
Registriert seit: 28.10.03
Chakky Leistung: 8086
Chakky eine Nachricht über ICQ schicken
Likes: 110
Standard

mmh da sehe ich das problem beim reload zum bsp einer eingabe per formular und abschicken per post

wenn da ein reload gemacht wird kommt ja die nette meldung ob du die post sachen nochmal senden willst oder nicht

man könnte dann maximal mit einen iframe machen das die anzeige nur neu geladen wird
__________________
cu
Chakky

we are dreaming in digital
we are living in realtime
we are thinking in binary
we are talking in IP
welcome to our world
Chakky ist offline   Mit Zitat antworten
Alt 26.04.07, 11:31   #10 (permalink)
Moderator
 
Benutzerbild von lightsaver
 
Registriert seit: 19.06.06
lightsaver Leistung: Pentium Ilightsaver Leistung: Pentium Ilightsaver Leistung: Pentium I
Likes: 52
Standard

naja, war auch nur ein vorschlag der natürlich nur abhängig von der seite realisiert werden kann - oder ebend nicht
lightsaver ist offline   Mit Zitat antworten
Alt 26.04.07, 11:41   #11 (permalink)
Themenstarter
 
Benutzerbild von reaLInsanity
 
Registriert seit: 10.01.06
reaLInsanity Leistung: Facit NTK
reaLInsanity eine Nachricht über ICQ schicken reaLInsanity eine Nachricht über AIM schicken reaLInsanity eine Nachricht über Yahoo! schicken
Likes: 0
Standard

ich glaub ich habe es ^^
Also über meine index.php wird alles eingebunden, sprich sie wird immer auch bei Seitenwechsel aufgerufen.

index.php (Waren noch kleine Fehler drinne)
PHP-Code:
if($_SESSION['user_id']){
$sql "UPDATE user SET lastlogin='".time()."' WHERE ID='".$_SESSION['user_id']."'";
$result mysql_query($sql) OR die(mysql_error());}

$sql1 "SELECT ID,Name,lastlogin FROM user WHERE (lastlogin+60)<'".time()."'"
$result1 mysql_query($sql1) OR die("Datenbankfehler!");
if(
mysql_num_rows($result1)) {

          while(
$row mysql_fetch_assoc($result1)) {
              
$sql "UPDATE user SET eingeloggt=0 WHERE ID='".$row['ID']."'";
            
$result mysql_query($sql) OR die(mysql_error());}} 
wäre jezz nur für eine Minute zum testen, biher klappt das eig. auch gut ^^so wie ich es getestet habe.
reaLInsanity ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » Sessions zeitabhänig destroyen?
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP => Sessions TheEvilOne (Web-) Design und webbasierte Sprachen 15 20.10.04 10:52
PHP => Sessions TheEvilOne Code Kitchen 15 20.10.04 10:52
problem mit php sessions matrixII Code Kitchen 6 22.02.04 19:20
sessions benutzen für loginbereich HellKnight (Web-) Design und webbasierte Sprachen 2 19.02.04 21:16
Sessions in PHP? mido (Web-) Design und webbasierte Sprachen 4 01.01.02 19:14


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61