Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Session nach bestimmter Zeit löschen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Session nach bestimmter Zeit löschen


 
BenBay
03-09-2003, 00:01 
 
Hallo,
wie kann ich eine Session nach einer bestimmten Zeit vernichten, sodas sich der User wieder neu anmelden muss.
Es gibt da was mit Timeout aber da komme ich irgendwie nicht weiter.
Vielen dank für Eure Hilfe.

 
Moqui
03-09-2003, 00:09 
 
wenn du die Berechtigung hast, dann kannst ja dein Script die Session-Dateien löschen, direkt im Ordner.

Einfacher gehts aber mit session_destroy() :D

 
TobiaZ
03-09-2003, 00:19 
 
jupp, sobald du die id hast, einfach den user kicken.

 
BenBay
03-09-2003, 00:20 
 
ja, aber wie mache ich das nach einer bestimmten Zeit, oder zumindest wann er die Seite verlässt oder das Browserfenser schliest?

 
TobiaZ
03-09-2003, 00:22 
 
definiere bestimmte zeit!

 
BenBay
03-09-2003, 00:23 
 
ja, aber wie und wo? Sorry, stehe auf den Schlauch!!!

 
TobiaZ
03-09-2003, 00:24 
 
ruhig blut! wenn du mit meiner geschwindigkeit nicht mitzkommst, kein problem...

 
BenBay
03-09-2003, 00:29 
 
Und? Wo kann ich jetzt die Zeit definieren? :rolleyes:

 
TobiaZ
03-09-2003, 00:32 
 
definiere bestimmte zeit! du sollst mir definieren, was du damit meinst. das kann ja alles sein!

 
BenBay
03-09-2003, 00:36 
 
Also, der User loggt sich ein. Nach einer bestimmten Zeit oder wenn er die Seite verlässt oder er das Browserfenster schliest soll die Session gelöscht werden so das er sich wieder anmelden muss. Login usw. habe ich schon, funtzt auch. Nur wie ich das hinbekomme was ich gerade beschrieben hab, ist mir ein Rätsel. Ich kann nichts in der php.ini oder so ändern, falls du da eine Lösung parat haben solltest.

 
TobiaZ
03-09-2003, 00:48 
 
Nach einer bestimmten Zeit oder wenn er die Seite verlässt oder er das Browserfenster schliest soll die Session gelöscht werden so das er sich wieder anmelden muss

das passiert aber automatisch!!!

24min ist der standardwert.

wenn er das fenster zu macht, ist die session verloren.
wenn er dies nicht mach, könnte er darauf (innerhalb der 24 min) zurückgreifen. danach wird die session irgendwann komplett gelöscht.

was du einfach machen kannst

1) letzte aktion in db speichern und gucken, wie lange seit der letzten aktion vergangen ist

wenn er aber weiter surft, kann er immer wieder zurück surfen, solange das im zeitraum ist, bleibt er eingeloggt. logosch!

 
TobiaZ
03-09-2003, 00:48 
 
Hört sich übrigens nach Brainstorming an. (mittlererweile)

*Verschieb*

 
BenBay
03-09-2003, 00:54 
 
Hallo,
habe das Fenster jetzt mal geschlossen es ist aber in der DB noch immer eine Session vorhanden. Also das Automatische funktioniert also icht.
Ich versuche es jetzt mal mit deinem zweiten Vorschlag obwohl ich nicht sicher bin das man das auch anders Lösen kann auch wenn ich nicht weiß wie. :confused:

 
TobiaZ
03-09-2003, 00:56 
 
hmm, anscheinend noch nicht mit sessions beschäfftigt.

dann verrate mir mal, wie du als user wieder an die session drankommen willst.

das löschen übernimmt doch der GC. der kommt aber wann er will.

 
BenBay
03-09-2003, 01:00 
 
Also als kleine Hilfe, ich habe das Login Script von mrhappiness aus den Tuts. Wenn ich mich einlogge wird eine SessionID in die DB geschrieben die wenn ich auf ausloggen klicke wieder gelöscht wird. Ich möchte dies aber nach einer bestimmten Zeit machen das er sich ausloggt.

P.S. Wenn ich nerve dann sags mir und das Thema ist vom Tisch. :(

 
TobiaZ
03-09-2003, 10:41 
 
... hatte schon schlimmere... :D

naja, ob die sessionID bei Hppay in der DB stehen bleibt oder nicht, ist imho aber völlig uninteressant! Schließlich kannst du ja nichts mehr damit anfangen.

 
damonn
16-02-2005, 23:08 
 
du benützt also das script von mrhappiness und willst dazu eine function einbauen, dass der Benutzer nach einer bestimmten Zeit, ähm, "ausgeloggt wird"

das ist kein Problem, denn vor dem Problem stand ich auch, und ich habs so gelöst: (ich wende das nun auf das Script von mrhappiness an - bei mir ist der Aufbau etwas anders, aber ich denke, dass es klappen dürfte)

1. erstelle eine neue Spalte in deiner "user"-Tabelle - ich hab sie "actiontime" genannt (setzte sie als standard auf null)

2. mach die sessionshelpers.inc. php auf
und ändere folgende Dinge:

a) bei login()
$sql="UPDATE TABELLENNAME SET UserSession='".session_id()."', actiontime=$zeit WHERE UserId=".$userid;

b) bei logout()
$sql="UPDATE TABELLENNAME SET UserSession=NULL, actiontime=NULL WHERE UserSession='".session_id()."'";

c) setze diese neue Funktion ein:

function time_check()
{
// Eingeloggt?
if (logged_in())
{
//Momentane Zeit (in Sekunden seit dem 01.01.1970)
$zeit = time();
//Nach welcher Zeit soll ausgeloggt werden? (in Sekunden) hier 1 Stunde
$auslogg = 3600;
// Abfrage der Uhrzeit der letzten Aktion
$sql = "SELECT actiontime FROM TABELLENNAME WHERE UserSession='".session_id()."'";
// Abrage seden
$res = mysql_query($sql);
// Ergebnis in Variable speichern
$erg = mysql_result($res, 0, "actiontime");
// Neue Zeit - alte Zeit = Differenz
$grenze = $zeit - $erg;
// Eigentlich Funktion, wenn die letzte Aktion länger als 1 Stunden her war -> ausloggen
if ($grenze > $auslogg) logout();
// Ansonsten die "Aktionszeit" auf den neusten Stand bringen
else
{
$sql = "UPDATE TABELLENNAME SET actiontime=$zeit WHERE UserSession='".session_id()."'";
mysql_query($sql);
}
}
}


d) füge bei der login.php, nach

include 'sessionhelpers.inc.php';

time_check();

ein.

Vergiss net, bei c) time_check() anstatt "TABELLENNAME" den Namen deiner MySQL-Tabelle einzutragen...

Ein DANK(!!!) noch an mrhappiness, ich benütz sein Script in veränderter Form, klappt 1a!

adios ;-)

 
lightdisc
17-04-2006, 00:58 
 
Es gibt auch was das heisst das heisst javascript!!!
==> "Onunload"
....

 
tomstig
17-04-2006, 01:12 
 
onunload ist aber unnötig, weil wenn der User die Seite schließt rennt die session - wie gesagt - ca. 25min weiter, bevor sie gelöscht wird.

Es geht wahrscheinlich darum, ein "Who is online?" zu machen, stimmts?

 
st@tic
18-04-2006, 15:50 
 
ihr macht das für meinen geschmack zu kompliziert.

ich speichere einfach den timestamp + ner gewissen Zeit in der Session selbst.
Und auf jeder seite wird dann mittels includierten if-abfrage überprüft ob der timestamp in der session >= dem aktuellen timestamp ist.
wenn er noch größer ist wird er verlängert ansonsten wird die session zerstört.

funktioniert auch einwandfrei :)


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:36 Uhr.