Wat een gedoe, twee of meer applicaties met eigen sessies onder dezelfde hostname. Dan moet je paden mee geven in de cookies. En wel vóór het starten van de sessie.
Maar omdat de sessie-cookie niet zomaar wordt bijgewerkt met iedere request moet na het starten van de sessie de lifetime nog worden bijgewerkt. ’t Is nu eenmaal niet anders. Oh, en het schijnt belangrijk te zijn om een sessie-naam te definiëren…
Dus de enige juiste manier, volgens mij, om een sessie te (her)starten:
$name = 'myapp'; $timeout = 600; $domain = preg_replace('/^[^\.]+/', '', $_SERVER['HTTP_HOST']); $path = preg_replace('/[^\/]*$/', '', $_SERVER['REQUEST_URI']); $https = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] && ($_SERVER['HTTPS'] != 'off'); session_name($name); session_set_cookie_params($timeout, $path, $domain, $https, !$https); session_start(); setcookie(session_name(), session_id(), time()+$timeout, $path, $domain, $https, !$https);
Of je gooit de hele sessie-afhandeling van PHP overboord, en bouwt zelf wat beters.