timeout für Sessions
Sebastian
- php
Hallo liebe Gemeinde!
Dank dieses Feature-Artikels habe ich für einen kleinen Login-Bereich meines Projekts Sessions eingeführt. Klappt auch alles hervorragend.
Jedoch stellte sich mir die Frage, ob, und wenn ja, wie, es mit der Feature-Artikel-Lösung möglich ist, ein automatisches timeout für jede Session zu implementieren. Ich stelle mir vor, dass, wenn jemand 31 Minuten nach seinem Login bzw. nach seiner letzten Aktivität innerhalb des Login-Bereiches erneut eine Seite innerhalb des geschützten Bereiches aufruft, auf die Seite login.php verwiesen wird.
Geht das? Und wenn ja, wie?
Vielen dank und schöne Grüße -
Sebastian
Hi,
Jedoch stellte sich mir die Frage, ob, und wenn ja, wie [..] auf die Seite login.php verwiesen wird.
Geht das? Und wenn ja, wie?
in der login.php wird die sessionvariable $_SESSION['angemeldet'] erstellt. durch:
session_start();
if(!$_SESSION['angemeldet'])
{
header("Location: login.php"); // leitet auf die login.php
die; // verhindert das ausführen der aufgerufenen datei
}
dies sollten die ersten 6 zeilen deiner scripte des geschützten bereiches sein.
MfG
Hallo Daniel,
> if(!$_SESSION['angemeldet'])
if(!isset($_SESSION['angemeldet']))
header("Location: login.php"); // leitet auf die login.php
mal abgesehen davon, dass hier eine absolute URL stehen muss - schöner wäre es noch, wenn man noch einen Query-String dranhängt, damit die login.php wieder auf die gerade verlassene Seite zurückleiten kann.
die; // verhindert das ausführen der aufgerufenen datei
ich verwende immer exit;
Grüße aus Nürnberg
Tobias
Hi,
if(!$_SESSION['angemeldet'])
if(!isset($_SESSION['angemeldet']))
nuja, wenn $\_SESSION['angemeldet'] aber == false ist dann ist isset nicht gut, klar ein
~~~php
if(!isset($_SESSION['angemeldet']))
{
if($_SESSION['angemeldet'])
{
// der die das Client ist eingeloggt
}
}
Wäre wohl sauberer.
die; // verhindert das ausführen der aufgerufenen datei
ich verwende immer exit;
naja, jedem das seine, ich empfinde die; als eindeutiger.
MfG
Hallo ihr zwei,
vielen Dank für die Antworten, aber was ich eigentlich wissen wollte ist:
Jedoch stellte sich mir die Frage, ob, und wenn ja, wie, es mit der Feature-Artikel-Lösung möglich ist, ein automatisches timeout für jede Session zu implementieren.
Wie lange bleibt jemand, der mit der Feature-Artikel-Lösung eingeloggt ist, angemeldet? Bzw. wie baue ich ein, dass die Session nach einer gewissen Zeit automatisch zerstört wird?
Nochmal Danke im Voraus und schöne Grüße -
Sebastian
Hi,
Wie lange bleibt jemand, der mit der Feature-Artikel-Lösung eingeloggt ist, angemeldet?
das kommt nicht darauf an.
Bzw. wie baue ich ein, dass die Session nach einer gewissen Zeit automatisch zerstört wird?
Das liegt an den einstellungen des Servers. du könntest aber außer
$_SESSION['angemeldet'] noch ein $_SESSION['letzte_aktion'] machen.
$akt_timestamp = time();
$max_time = //x-sekunden
if(($_SESSION['letzte_aktion']+$max_time)<$akt_timestamp)
{
// letzte aktion liegt schon lännger als x-sekunden zurück
}
else
{
$_SESSION['letzte_aktion'] = $akt_timestamp;
}
MfG
Hallo Daniel,
Du könntest aber außer
$_SESSION['angemeldet'] noch ein $_SESSION['letzte_aktion'] machen.
$akt_timestamp = time();
$max_time = //x-sekunden
if(($_SESSION['letzte_aktion']+$max_time)<$akt_timestamp)
{
// letzte aktion liegt schon lännger als x-sekunden zurück
}
else
{
$_SESSION['letzte_aktion'] = $akt_timestamp;
}
Vielen Dank - funktioniert allerbest!
Gruß -
Sebastian