From cf7d74c9cdeec11d0f1528299aaa3aa4ccf6e815 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Sat, 24 Nov 2007 23:31:49 +0000 Subject: [PATCH] on peut ne vouloir modifier qu'un seul parametre de la session (shoutbox ne modifie que le nick), sans perdre les autres ; et #SESSION doit s'invalider si on modifie un de ces parametres, sinon on retombe dans le cache --- ecrire/inc/utils.php | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 2f2649446c..41e52e89bc 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -1211,20 +1211,23 @@ function verifier_visiteur() { // dans un formulaire sans login (ex: #FORMULAIRE_FORUM) // Attention on separe bien session_nom et nom, pour eviter // les melanges entre donnees SQL et variables plus aleatoires - if ( - _request('session_nom') !== null - OR _request('session_email') !== null - ) { + $variables_session = array('nom', 'email'); + while (list(,$var) = each($variables_session)) { + if (_request('session_'.$var) !== null) { + $init = true; + break; + } + } + if (isset($init)) { @spip_initialisation(); $session = charger_fonction('session', 'inc'); + $session(); include_spip('inc/texte'); - $GLOBALS['auteur_session'] = array ( - 'session_nom' => safehtml(_request('session_nom')), - 'session_email' => safehtml(_request('session_email')), - 'id_auteur' => 0, - 'statut' => '', - 'auth' => '' - ); + foreach($variables_session as $var) + if (($a = _request('session_'.$var)) !== null) + $GLOBALS['auteur_session']['session_'.$var] = safehtml($a); + if (!isset($GLOBALS['auteur_session']['id_auteur'])) + $GLOBALS['auteur_session']['id_auteur'] = 0; ajouter_session($GLOBALS['auteur_session']); return 0; } @@ -1284,7 +1287,7 @@ function spip_session($force = false) { if ($force OR !isset($session)) { $s = pipeline('definir_session', $GLOBALS['auteur_session'] - ? $GLOBALS['auteur_session']['id_auteur'] + ? serialize($GLOBALS['auteur_session']) . '_' . @$_COOKIE['spip_session'] : '' ); -- GitLab