From 9f5ba8ba0d1c2b5ee22b071fd562e6773ef1d33b Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Wed, 1 Jan 2003 13:38:33 +0000 Subject: [PATCH] un peu de nettoyage du code + patch prefixe cookie --- ecrire/inc.php3 | 4 ++-- ecrire/inc_acces.php3 | 3 +++ ecrire/inc_version.php3 | 40 ++++++++++++++++++++++++++++++++++++++++ inc-formulaires.php3 | 4 ++-- inc-forum.php3 | 24 ------------------------ inc-login.php3 | 2 +- spip_cookie.php3 | 12 ++++++------ 7 files changed, 54 insertions(+), 35 deletions(-) diff --git a/ecrire/inc.php3 b/ecrire/inc.php3 index 9e30e29b2a..c5d1ee88fd 100644 --- a/ecrire/inc.php3 +++ b/ecrire/inc.php3 @@ -50,7 +50,7 @@ if ($prefs_mod) { } if ($set_ecran) { // on pose un cookie long car ce reglage depend plus du navigateur que de l'utilisateur - setcookie('spip_ecran', $set_ecran, time() + 365 * 24 * 3600); + spip_setcookie('spip_ecran', $set_ecran, time() + 365 * 24 * 3600); $spip_ecran = $set_ecran; } if (!$spip_ecran) $spip_ecran = "etroit"; @@ -244,7 +244,7 @@ function tester_rubrique_vide($id_rubrique) { // Recuperation du cookie // -$cookie_admin = $HTTP_COOKIE_VARS["spip_admin"]; +$cookie_admin = $HTTP_COOKIE_VARS['spip_admin']; diff --git a/ecrire/inc_acces.php3 b/ecrire/inc_acces.php3 index a399b592de..2e81646d35 100644 --- a/ecrire/inc_acces.php3 +++ b/ecrire/inc_acces.php3 @@ -31,6 +31,9 @@ function creer_pass_aleatoire($longueur = 8, $sel = "") { $pass .= $x; $s = substr($s, 2); } + $pass = ereg_replace("[./]", "a", $pass); + $pass = ereg_replace("[I1l]", "L", $pass); + $pass = ereg_replace("[0O]", "o", $pass); return $pass; } diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3 index 79fa791c43..87ea40b829 100644 --- a/ecrire/inc_version.php3 +++ b/ecrire/inc_version.php3 @@ -14,6 +14,10 @@ define("_ECRIRE_INC_VERSION", "1"); // (a modifier pour avoir plusieurs sites SPIP dans une seule base) $table_prefix = "spip"; +// Prefixe des cookies +// (a modifier pour installer des sites SPIP dans des sous-repertoires) +$cookie_prefix = "spip"; + // faut-il loger les infos de debug dans data/spip.log ? $debug = false; @@ -175,6 +179,42 @@ function feed_post_files($table) { feed_post_files('HTTP_POST_FILES'); +// +// Appliquer le prefixe cookie +// +function spip_setcookie ($name='', $value='', $expire='', $path='', $domain='', $secure='') { + $name = ereg_replace ('^spip', $GLOBALS['cookie_prefix'], $name); + + 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); +} +if ($cookie_prefix <> 'spip') { + reset ($HTTP_COOKIE_VARS); + while (list($name,$value) = each($HTTP_COOKIE_VARS)) { + if (ereg('^spip', $name)) { + unset($HTTP_COOKIE_VARS[$name]); + unset($$name); + } + } + reset ($HTTP_COOKIE_VARS); + while (list($name,$value) = each($HTTP_COOKIE_VARS)) { + if (ereg('^'.$cookie_prefix, $name)) { + $spipname = ereg_replace ('^'.$cookie_prefix, 'spip', $name); + $HTTP_COOKIE_VARS[$spipname] = $value; + $$spipname = $value; + } + } +} + + // // Infos sur l'hebergeur // diff --git a/inc-formulaires.php3 b/inc-formulaires.php3 index c8d5e1a22d..f36eabcb0d 100644 --- a/inc-formulaires.php3 +++ b/inc-formulaires.php3 @@ -319,8 +319,8 @@ function formulaire_inscription($type) { // envoyer identifiants par mail if ($continue) { - include_local("inc-forum.php3"); - $pass = generer_pass_forum($mail_inscription); + include_ecrire("inc_acces.php3"); + $pass = creer_pass_aleatoire(8,$mail_inscription); $login = test_login($mail_inscription); $mdpass = md5($pass); $htpass = generer_htpass($pass); diff --git a/inc-forum.php3 b/inc-forum.php3 index 77c6cdc9be..112fcb288b 100644 --- a/inc-forum.php3 +++ b/inc-forum.php3 @@ -33,30 +33,6 @@ function get_forums_publics($id_article=0) { return $forums_publics; } -function generer_pass_forum($email = '') { - $passw = creer_pass_aleatoire(9, $email); - $passw = ereg_replace("[./]", "a", $passw); - $passw = ereg_replace("[I1l]", "L", $passw); - $passw = ereg_replace("[0O]", "o", $passw); - return $passw; -} - -function generer_hash_forum($email, $id_auteur) { - return calculer_action_auteur("forum public $email", $id_auteur); -} - -function poser_cookie_forum($email, $id_auteur, $duree = 30) { - $hash = generer_hash_forum($email, $id_auteur); - setcookie("spip_forum_email", $email, time() + (3600 * 24 * $duree)); - setcookie("spip_forum_hash", $hash, time() + (3600 * 24 * $duree)); -} - -function enlever_cookie_forum() { - setcookie("spip_forum_email", "", time() - 3600 * 24); - setcookie("spip_forum_hash", "", time() - 3600 * 24); -} - - function afficher_petits_logos_mots($id_mot) { $racine = "IMG/moton$id_mot"; if (file_exists("$racine.gif")) { diff --git a/inc-login.php3 b/inc-login.php3 index 031b8763f1..01e2176401 100644 --- a/inc-login.php3 +++ b/inc-login.php3 @@ -121,7 +121,7 @@ function login($cible = '', $prive = 'prive', $message_login='') { } else if (!$flag_autres_sources) { $erreur = "L'identifiant « $login » est inconnu."; $login = ''; - @setcookie("spip_admin", "", time() - 3600); + @spip_setcookie("spip_admin", "", time() - 3600); } } diff --git a/spip_cookie.php3 b/spip_cookie.php3 index 8573fedd97..341de5ef38 100644 --- a/spip_cookie.php3 +++ b/spip_cookie.php3 @@ -28,7 +28,7 @@ if ($change_session == 'oui') { $auteur_session['ip_change'] = false; $cookie = creer_cookie_session($auteur_session); supprimer_session($spip_session); - setcookie('spip_session', $cookie); + spip_setcookie('spip_session', $cookie); } @header('Content-Type: image/gif'); @header('Expires: 0'); @@ -56,7 +56,7 @@ if ($logout) { spip_query("UPDATE spip_auteurs SET en_ligne = DATE_SUB(NOW(),INTERVAL 6 MINUTE) WHERE id_auteur = ".$auteur_session['id_auteur']); if ($spip_session) { zap_sessions($auteur_session['id_auteur'], true); - setcookie('spip_session', $spip_session, time() - 3600 * 24); + spip_setcookie('spip_session', $spip_session, time() - 3600 * 24); } if ($PHP_AUTH_USER) { include_local ("inc-login.php3"); @@ -77,7 +77,7 @@ if ($logout) { // puis de passer a spip_login qui diagnostiquera l'echec de cookie // le cas echeant. if ($test_echec_cookie == 'oui') { - setcookie('spip_session', 'test_echec_cookie'); + spip_setcookie('spip_session', 'test_echec_cookie'); $link = new Link("spip_login.php3?var_echec_cookie=oui"); $link->addVar("var_url", $cible->getUrl()); @header("Location: ".$link->getUrl()); @@ -156,17 +156,17 @@ if ($essai_login == "oui") { // cookie d'admin ? if ($cookie_admin == "non") { - setcookie('spip_admin', $spip_admin, time() - 3600 * 24); + spip_setcookie('spip_admin', $spip_admin, time() - 3600 * 24); $cible->delVar('var_login'); $cible->addVar('var_login', '-1'); } else if ($cookie_admin AND $spip_admin != $cookie_admin) { - setcookie('spip_admin', $cookie_admin, time() + 3600 * 24 * 14); + spip_setcookie('spip_admin', $cookie_admin, time() + 3600 * 24 * 14); } // cookie de session ? if ($cookie_session) - setcookie('spip_session', $cookie_session); + spip_setcookie('spip_session', $cookie_session); // Redirection // Sous Apache 1.x, les cookies avec une redirection fonctionnent -- GitLab