From c5eca28f9cdbd60f47e71d46bd907cce52412912 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Wed, 5 Jun 2002 02:25:35 +0000 Subject: [PATCH] un peu mieux sur l'auth-cookie + modif inclusion cache pour garder les globales. --- ecrire/inc_auth.php3 | 6 +++++- ecrire/inc_session.php3 | 14 ++++++++++++-- inc-cache.php3 | 8 ++++++-- inc-public.php3 | 20 ++++++++++++++++++-- 4 files changed, 41 insertions(+), 7 deletions(-) diff --git a/ecrire/inc_auth.php3 b/ecrire/inc_auth.php3 index a9b7e8d644..e8b203b118 100644 --- a/ecrire/inc_auth.php3 +++ b/ecrire/inc_auth.php3 @@ -90,7 +90,11 @@ function auth() { if ($SUPPRIME_LA_SECURITE_POUR_JOUER_AUX_COOKIES) if ($cookie = $HTTP_COOKIE_VARS[spip_session]) { include_local ("inc_session.php3"); - $session_login = verifie_cookie_session ($cookie); + if ($visiteur = verifie_cookie_session ($cookie)) { + if ($visiteur->statut == '0minirezo' OR $visiteur->statut == '1comite') { + $session_login = $visiteur->login; + } + } } if (! $session_login AND ($HTTP_COOKIE_VARS[cookie_login] == 'experimental')) { @header ("Location: login.php3"); diff --git a/ecrire/inc_session.php3 b/ecrire/inc_session.php3 index 74cd2b22b5..167a3511d0 100644 --- a/ecrire/inc_session.php3 +++ b/ecrire/inc_session.php3 @@ -7,11 +7,17 @@ * */ + // + // Ce fichier ne sera execute qu'une fois + if (defined("_ECRIRE_INC_SESSION")) return; + define("_ECRIRE_INC_SESSION", "1"); + // cree le cookie correspondant a l'auteur // attention aux trous de securite ;) function cree_cookie_session ($id_auteur) { if ($id_auteur > 0) { $query = "SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur"; + include_ecrire ("inc_connect.php3"); $result = spip_query ($query); if ($auteur = mysql_fetch_object ($result)) { $session = md5($id_auteur . $auteur->pass); // ici creer le numero de session @@ -30,11 +36,15 @@ function verifie_cookie_session ($cookie) { if (list(,$id_auteur,$email,$nom,$session) = decode_cookie_session ($cookie)) { if ($id_auteur > 0) { + include_ecrire ("inc_connect.php3"); $query = "SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur"; $result = spip_query ($query); if ($auteur = mysql_fetch_object ($result)) { - if ($session == md5($id_auteur . $auteur->pass)) // ici verifier le num de session dans la base - return $auteur->login; + if ($session == md5($id_auteur . $auteur->pass)) { // ici verifier le num de session dans la base + $auteur->pass = ''; // securite + $auteur->htpass = ''; + return $auteur; + } } } } diff --git a/inc-cache.php3 b/inc-cache.php3 index 5825935006..92354eb3da 100644 --- a/inc-cache.php3 +++ b/inc-cache.php3 @@ -10,12 +10,16 @@ define("_INC_CACHE", "1"); // Inclure un fichier cache // -function include_cache($chemin_cache) { +/* mauvaise idee on perd les globales... a moins qu'il faille faire + un include () normal pour les squelettes normaux, et un include_cache() + pour les squelettes inclus.... ??? */ + +/* function include_cache($chemin_cache) { include_local($chemin_cache); if ($GLOBALS['flag_apc']) { apc_rm($chemin_cache); } -} +} */ // // Calcul du nom du fichier cache diff --git a/inc-public.php3 b/inc-public.php3 index 573dc767ad..7899430e5b 100644 --- a/inc-public.php3 +++ b/inc-public.php3 @@ -23,7 +23,10 @@ if (defined("_INC_PUBLIC")) { } } - include_cache($chemin_cache); + include ($chemin_cache); + if ($GLOBALS['flag_apc']) { + apc_rm($chemin_cache); + } // ATTENTION : ne marchera pas sous PHP3 return; @@ -36,6 +39,16 @@ $dir_ecrire = 'ecrire/'; include ("ecrire/inc_version.php3"); include_local ("inc-cache.php3"); + +// +// Presence du cookie de visiteur : valider ce cookie et extraire les donnees +// +if ($cookie = $HTTP_COOKIE_VARS[spip_session]) { + include_ecrire ("inc_session.php3"); + $visiteur_authentifie = verifie_cookie_session ($cookie); +} else + $visiteur_authentifie = false; + // // Ajouter un forum // @@ -132,7 +145,10 @@ if ($var_recherche AND $flag_ob AND $flag_preg_replace AND !$flag_preserver AND if (file_exists($chemin_cache)) { if ($lastmodified) @Header ("Last-Modified: ".gmdate("D, d M Y H:i:s T", $lastmodified)); - include_cache($chemin_cache); + include ($chemin_cache); + if ($GLOBALS['flag_apc']) { + apc_rm($chemin_cache); + } } -- GitLab