diff --git a/ecrire/inc/auth.php b/ecrire/inc/auth.php index dc455d0a1..44950a7e7 100644 --- a/ecrire/inc/auth.php +++ b/ecrire/inc/auth.php @@ -202,18 +202,10 @@ function auth_init_droits($row) unset($GLOBALS['visiteur_session']['alea_actuel']); unset($GLOBALS['visiteur_session']['alea_futur']); - // rajouter les sessions meme en mode auth_http - // pour permettre les connexions multiples et identifier les visiteurs + // creer la session au besoin if (!isset($_COOKIE['spip_session'])) { $session = charger_fonction('session', 'inc'); - if ($spip_session = $session($row)) { - include_spip('inc/cookie'); - spip_setcookie( - 'spip_session', - $_COOKIE['spip_session'] = $spip_session, - time() + 3600 * 24 * 14 - ); - } + $spip_session = $session($row); } // reinjecter les preferences_auteur apres le reset de spip_session diff --git a/ecrire/inc/cookie.php b/ecrire/inc/cookie.php index 3b93f24d6..5648e26e7 100644 --- a/ecrire/inc/cookie.php +++ b/ecrire/inc/cookie.php @@ -23,20 +23,29 @@ function spip_setcookie ($name='', $value='', $expire=0, $path='AUTO', $domain=' if (!$domain AND defined('_COOKIE_DOMAIN')) $domain = _COOKIE_DOMAIN; - #spip_log("cookie('$name', '$value', '$expire', '$path', '$domain', '$secure'"); + #spip_log("cookie('$name', '$value', '$expire', '$path', '$domain', '$secure', '$httponly'"); + + // liste des cookies en httponly (a passer en define si besoin) + $httponly = in_array($name, explode(' ', 'spip_session')); + + $a = + ($httponly AND strnatcmp(phpversion(),'5.2.0') >= 0) ? + @setcookie ($name, $value, $expire, $path, $domain, $secure, $httponly) + : ($secure ? + @setcookie ($name, $value, $expire, $path, $domain, $secure) + : ($domain ? + @setcookie ($name, $value, $expire, $path, $domain) + : ($path ? + @setcookie ($name, $value, $expire, $path) + : ($expire ? + @setcookie ($name, $value, $expire) + : + @setcookie ($name, $value) + )))); - if ($secure) - @setcookie ($name, $value, $expire, $path, $domain, $secure); - else if ($domain) - @setcookie ($name, $value, $expire, $path, $domain); - else if ($path) - @setcookie ($name, $value, $expire, $path); - else if ($expire) - @setcookie ($name, $value, $expire); - else - @setcookie ($name, $value); - spip_cookie_envoye(true); + + return $a; } function spip_cookie_envoye($set = '') { diff --git a/prive/formulaires/login.php b/prive/formulaires/login.php index 95278982b..634fa8351 100644 --- a/prive/formulaires/login.php +++ b/prive/formulaires/login.php @@ -201,14 +201,6 @@ function formulaires_login_traiter_dist($cible="",$login="",$prive=null){ } } - - // Si on est admin, poser le cookie de correspondance - if ($GLOBALS['auteur_session']['statut'] == '0minirezo') { - include_spip('inc/cookie'); - spip_setcookie('spip_admin', '@'.$GLOBALS['auteur_session']['login'], - time() + 7 * 24 * 3600); - } - // Si on est connecte, envoyer vers la destination if ($cible AND ($cible!=self())) { if (!headers_sent() AND !$_GET['var_mode']) {