Frage zu Sessions bezüglich eingenen Counterscripts

wenn der gleiche Besucher die Seite am nächsten Tag wieder besucht, und in der Zwischenzeit niemand anders da war, dann stimmt die Session id wieder überein und es wird nicht weiter gezählt,

Das versteh ich nicht..
Die Session wird ja immer wieder erneuert..
Entweder wenn dem Client eine neue zugewiesen wird (zb. Browser schließen / öffnen) oder wenn es zu einem Session Timeout kommt.
 
Das versteh ich nicht..
Die Session wird ja immer wieder erneuert..
Entweder wenn dem Client eine neue zugewiesen wird (zb. Browser schließen / öffnen) oder wenn es zu einem Session Timeout kommt.

Ich hab mit Session bis jetzt noch nie gearbeitet und kenn mich nicht aus.
Wenn ich mein Brwoser schließe oder auch PC ausschalte und wieder ein, habe ich irgendwie immer wieder die gleiche Session.
erzeugen tue ich die Session durch folgenden Code am Anfang der Seite:
PHP:
session_start();

if (isset($_SESSION["sid"])) {
// echo "Session aktiv";
// echo "<br>SID : ".$_SESSION["sid"];
// echo "<br>SESSION : ".session_encode();
} else {
// echo "Session nicht aktiv";
$tmp = md5(microtime());
//$_SESSION["sid"]= $tmp;
}

In meinem Counter Script rufe ich die Session ID durch folgende Funktion aus:
PHP:
$_SESSION["sid"]

Die Funktion
PHP:
 session_id()
benutze ich eigentlich nicht, aber ich habe sie eben mal getestet und festgestellt, dass diese zwar eine andere Session ID ausgibt, aber auch diese wechselt sich nicht wenn ich den Brwoser schließe oder den PC ausschalte, also macht es doch kein Unterschied ob ich
PHP:
 session_id()
oder
PHP:
$_SESSION["sid"]
benutze.

Das Problem ist halt das die Session immer gleich bleibt, ich teste ja alles lokal auf dem Rechner über XAMPP aber ich denke online wird es nicht anders sein.
 
Prüf mal das Session_timeout das am server eingestellt ist. (php_info()).
Hört sich für mich nach einem Problem aus lebenslangem Session Timeout und Cookies an...

Hatte das aber bisher eigentlich noch nie. Für gewöhnlich ist das Session Timeout auf 30-60 Min. eingestellt.

Wenn Du Cookies aktiviert hast, kann es sein, dass Du auch nach dem Schließen des Browsers wieder die selbe ID hast.

Lösch mal Deine Cookies, öffne den Browser nochmal und schau, ob Du eine neue ID hast. Da würd ich mal zum Suchen anfangen.
 
Hi, danke für deine Hilfe!!

Session_timeout kann ich nicht finden in den phpinfo() Angaben, dafür aber eine ähnliche Angabe session.cookie_lifetime beides auf 0.

Und wie löscht man noch gleich Cookies, das hab ich schon lange nicht gemacht?
 
Hängt vom Browser ab... Aber normalerweise unter Extras -> Dateien oder Offline Inhalte löschen.

Oder Du suchst es direkt auf der Platte. Liegt (wenn ich mich recht erinnere) unter dokumente und einstellung / USER / Anwendungsdaten.
 
Ja Danke, ich konnte die Cookies unter Extras Private Daten löschen und ich habe festgestellt, dass nach dem Löschen der Cookies der Counter wieder eins höher gezählt hat, also lag es an den Cookies, aber wie kann ich jetzt verhindern das die Session ID immer in ein Cookie gespeichert wird?
 
Das sollte egal sein, da das Cookie nur solange gilt, wie die session_lifetime eingestellt ist. Aber offenbar ist die bei Deinem Server extrem hoch.

Du kannst aber mit einem Parameter erzwingen, dass Sessions nie in Cookies gespeichert werden.


  • session.use_cookies
  • session.use_only_cookies

Details dazu gibts im Session Manual von PHP:
http://at.php.net/manual/de/ref.session.php

Ciao,
Mike
 
Ach ja, hier...
Darum versteh ich überhaupt nicht, warum du immer wieder die selbe Session ID bekommst:

session.cookie_lifetime integer
session.cookie_lifetime spezifiziert die Cookie-Lebensdauer, die an den Browser geschickt wird, in Sekunden. Der Wert 0 bedeutet "bis der Browser geschlossen wird." Grundeinstellung 0. Siehe auch session_get_cookie_params() und session_set_cookie_params(). Da das Cookie vom Browser zurückgegeben wird, wird seine Lebensdauer nicht verlängert. Es muss mittels setcookie() gesendet werden.
 
Ich verstehe es auch nicht, ich habe jetzt noch zusätzlich
PHP:
ini_set("session.use_cookies", "0");
in die Seite eingefügt, unter
PHP:
session_start();
if (isset($_SESSION["sid"])) {
// echo "Session aktiv";
// echo "<br>SID : ".$_SESSION["sid"];
// echo "<br>SESSION : ".session_encode();
} else {
// echo "Session nicht aktiv";
$tmp = md5(microtime());
$_SESSION["sid"]= $tmp;
}
aber es hat sich nichts geändert, wenn man den Brwoser verläßt und wieder aufruft, ist die alte Session immer noch da.

Deshalb geb ich es jetzt einfach mal auf.

Das einzige was mir hier noch Einfiel wäre die Funktion
PHP:
session_destroy();
aber die kann ich auch nicht logisch platzieren, höchstens wenn man prüfen könnte ab wann der Browser geschlossen wird oder sowas ähnliches.

Aber danke noch mal für deine Hilfe!!
 
Zurück