Session - Gültigkeit nach Beenden des Browers?!

Blaubmania

Erfahrenes Mitglied
Hiho,
hab über die Suche nicht richtiges gefunden. Ich habe das Prob das die Session zwar gültig ist so lange der Browser offen ist. Schließe ich den Browser dann und gehe wieder auf die Site dann muss ich mich wieder neu einloggen.
Meine Frage nun: Was muss ich tun damit der User auch nach beenden des Browsers und wieder aufrufen der Seite immer noch eingeloggt ist?
Hab mit ini_set die lifetime mal hochgesetzt aber das hat auch ned wirklich geholfen oder ich habs falsch gemacht.

Hier paar Code auszüge:

PHP:
 <?php
include 'funktion.inc.php';
if(isset($_REQUEST['login']))
{
usercheck($_REQUEST['benutzer'],md5($_REQUEST['passwort']));
}
if($_SESSION['login']==1)
{
echo'<div align="center" class="Stil3">Sie sind eingeloggt!</div>';
/*
$test = ini_get('session.cookie_lifetime');
echo $test;*/
}

PHP:
 function usercheck($name,$passwort)
{ 
$suche = "SELECT * FROM user WHERE Benutzername = '".$name."' AND Passwort = '".$passwort."' LIMIT 1";
$abfrage = mysql_query($suche) or die(mysql_error());
if(mysql_num_rows($abfrage)==1)
{
ini_set('session.cookie_lifetime','60');
$_SESSION['login']=1;
$_SESSION['dauer']=time();
}
else
{
return false;
}
}
 
Session-Variablen werden immer nur solange gespeichert, wie der Browser offen ist. Für alles andere benötigst du Cookies.
 
Ok danke schön ^^ dann mach ich mich mal schlau wie das mit den Cookies falls jemand ne gute Quelle hat wos einfach und verständlich erklärt ist vlt. son kleines beispiel dann einfach schreiben, danke!
 
Über den Parameter session.cookie_lifetime kannst du die Lifetime des Cookies (nicht der Session bestimmen). Standartwert ist 0, also bis der Browser geschlossen wird.
Siehe http://www.php.net/session

Wie der Name Session (zu Deutsch Sitzung) schon sagt, ist der Sinn einer Session eigentlich, Daten der aktuellen Sitzung zu speichern. Und diese ist logischerweise vorbei, wenn der User seinen Browser schließt.
Wenn du willst, dass der User eingeloggt bleibt, dann solltest du einen Cookie mit Usernamen und Passwort (verschlüsselt) beim User speichern, die session.cookie_lifetime aber bei 0 belassen.
 
Zuletzt bearbeitet:
Ja ka irgendwie schein ich noch nicht so ganz verstanden zu haben den unterschied zwischen session und cookies dachte das ich mit $_Session so ne Art Cookie setze aber hab ich wohl falsch gedacht ^^ Macht ja nichts. Muss ich mich da nochmal belesen.
 
Doch, da hast du schon recht. Mit dem Befehl session_start() wird ein Cookie gesetzt, der die Session-ID enthält, und eine Lifetime von 0 hat (wenn nicht anders über session.cookie_lifetime angegeben).
Die Daten der Session werden allerdings auf dem Server gespeichert. Lediglich die Session-ID gelangt zum Client, und über diese werden dem Client dann die Daten auf dem Server zugeordnet.

Aber wie bereits gesagt, ist der Sinn von Sessions eigentlich, Sitzungsdaten zu speichern. Falls du User-spezifische Daten über eine längere Zeitspanne speichern willst, dann solltest du Cookies verwenden.
 
Axo ich glaub jetzt hab ichs ^^ Der Session Cookie wird aufm Server gespeichert und dem User anhand der Session ID zugeordnet dann ist klar das es nach schliessen des Brwosers weg ist der User kriegt ja dnan ne neue SessionID und findet deshalb keinen Cookie aufm server vor. Wobei der "richtige" Cookie aufm Clienten abgespeichert wird und ich ihn deshalb jedesmal übern Server abfragen kann.
 
Nicht ganz. Cookies werden immer beim Client gespeichert. Ein Session-Cookie ist auch ein ganz normaler Cookie. Der Vorteil von Sessions ist es, dass du anhand der Session-ID eines Users Daten in einer Datei auf dem Server speichern kannst, und diese natürlich auch wieder auslesen kannst, sofern du die Session-ID kennst.
 
Ok ich glaubs ich habs also anstatt nen hidden field könnte ich dann einfach per $_SESSION übertragen auf eine andere Seite z.B. und jederzeit verarbeiten. Jut glaubs jetzt hab ich es aber wirklich ^^
Wird denn dann die Session Info aufm Server automatisch deleted? (Wahrscheinlich ja aber frag einfach mal ^^ )
 
Ja, dafür gibt es einen Garbage-Collector. Sessions auf die schon seit x Sekunden nicht mehr zugegriffen wurde, werden gelöscht, falls das Dateisystem die Zugriffszeit speichert. Die Zeit, anch welcher das passiert, kannst du mit session.gc_maxlifetime einstellen.

Infos zum Thema Sessions findest du auf http://www.php.net/session
 
Zurück