Skip to content
Extraits de code Groupes Projets
Valider 1a7ea33a rédigé par Fil's avatar Fil
Parcourir les fichiers

basculement des initialisations dans une fonction de ecrire/inc_utils, permet...

basculement des initialisations dans une fonction de ecrire/inc_utils, permet de faire, dans mes_options.php, un truc aussi simple que require_once(_DIR_RESTREINT.inc_utils.php); var_dump($GLOBALS[auteur_session]);
parent 28ef7237
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -455,10 +455,6 @@ global $img, $frame, $aide, $var_lang, $lang; ...@@ -455,10 +455,6 @@ global $img, $frame, $aide, $var_lang, $lang;
exit; exit;
// Recuperer les infos de langue (preferences auteur), si possible // Recuperer les infos de langue (preferences auteur), si possible
if (_FILE_CONNECT) {
include_ecrire ("inc_session");
verifier_visiteur();
}
utiliser_langue_visiteur(); utiliser_langue_visiteur();
if ($var_lang) changer_langue($var_lang); if ($var_lang) changer_langue($var_lang);
if ($lang) changer_langue($lang); # pour le cas ou on a fait appel au menu de changement de langue (aide absente dans la langue x) if ($lang) changer_langue($lang); # pour le cas ou on a fait appel au menu de changement de langue (aide absente dans la langue x)
......
...@@ -100,7 +100,6 @@ if ($logout_public) { ...@@ -100,7 +100,6 @@ if ($logout_public) {
} }
// tentative de logout // tentative de logout
if ($logout) { if ($logout) {
verifier_visiteur();
if ($auteur_session['login'] == $logout) { if ($auteur_session['login'] == $logout) {
spip_query("UPDATE spip_auteurs SET en_ligne = DATE_SUB(NOW(),INTERVAL 6 MINUTE) WHERE id_auteur = ".$auteur_session['id_auteur']); spip_query("UPDATE spip_auteurs SET en_ligne = DATE_SUB(NOW(),INTERVAL 6 MINUTE) WHERE id_auteur = ".$auteur_session['id_auteur']);
if ($spip_session) { if ($spip_session) {
...@@ -240,7 +239,6 @@ if ($var_lang) { ...@@ -240,7 +239,6 @@ if ($var_lang) {
// changer de langue espace prive (ou login) // changer de langue espace prive (ou login)
if ($var_lang_ecrire) { if ($var_lang_ecrire) {
include_ecrire('inc_lang'); include_ecrire('inc_lang');
verifier_visiteur();
if (changer_langue($var_lang_ecrire)) { if (changer_langue($var_lang_ecrire)) {
spip_setcookie('spip_lang_ecrire', $var_lang_ecrire, time() + 365 * 24 * 3600); spip_setcookie('spip_lang_ecrire', $var_lang_ecrire, time() + 365 * 24 * 3600);
......
...@@ -223,8 +223,8 @@ function ask_php_auth($pb, $raison, $retour, $url='', $re='', $lien='') { ...@@ -223,8 +223,8 @@ function ask_php_auth($pb, $raison, $retour, $url='', $re='', $lien='') {
// verifie si on a un cookie de session ou un auth_php correct // verifie si on a un cookie de session ou un auth_php correct
// et charge ses valeurs dans $GLOBALS['auteur_session'] // et charge ses valeurs dans $GLOBALS['auteur_session']
// //
function verifier_visiteur() { function verifier_session_visiteur() {
if (verifier_session($GLOBALS['_COOKIE']['spip_session'])) if (verifier_session($_COOKIE['spip_session']))
return true; return true;
if (verifier_php_auth()) if (verifier_php_auth())
return true; return true;
......
...@@ -844,6 +844,180 @@ function spip_register_globals() { ...@@ -844,6 +844,180 @@ function spip_register_globals() {
} }
} }
function spip_initialisation() {
// la taille maxi des logos (0 : pas de limite)
define('_LOGO_MAX_SIZE', 0); # poids en ko
define('_LOGO_MAX_WIDTH', 0); # largeur en pixels
define('_LOGO_MAX_HEIGHT', 0); # hauteur en pixels
// Le fichier de connexion a la base de donnees
define('_FILE_CONNECT_INS', (_DIR_RESTREINT . "inc_connect"));
define('_FILE_CONNECT',
(@is_readable(_FILE_CONNECT_INS . _EXTENSION_PHP) ?
(_FILE_CONNECT_INS . _EXTENSION_PHP)
: false));
// les repertoires annexes
define('_DIR_IMG', _DIR_RACINE ."IMG/");
define('_DIR_DOC', _DIR_RACINE ."IMG/");
define('_DIR_CACHE', _DIR_RACINE ."CACHE/");
define('_DIR_SESSIONS', _DIR_RESTREINT . "data/");
define('_DIR_TRANSFERT', _DIR_RESTREINT . "upload/");
define('_DIR_PLUGINS', _DIR_RACINE . "plugins/");
define('_DIR_LOGOS', _DIR_RACINE ."IMG/");
// les fichiers qu'on y met, entre autres
define('_FILE_CRON_LOCK', _DIR_SESSIONS . 'cron.lock');
define('_FILE_MYSQL_OUT', _DIR_SESSIONS . 'mysql_out');
define('_FILE_GARBAGE', _DIR_SESSIONS . '.poubelle');
define('_FILE_META', _DIR_SESSIONS . 'meta_cache.txt');
// sous-repertoires d'images
define('_DIR_TeX', _DIR_IMG . "cache-TeX/");
// Icones
# le chemin http (relatif) vers les images standard
define('_DIR_IMG_PACK', (_DIR_RESTREINT . 'img_pack/'));
# vers les logos de type de document, standard & perso
define('_DIR_IMG_ICONES_DIST', _DIR_IMG_PACK . "icones/");
define('_DIR_IMG_ICONES', _DIR_IMG . "icones/");
# les icones de la barre d'edition des formulaires
define('_DIR_IMG_ICONES_BARRE', _DIR_IMG_PACK . "icones_barre/");
# le chemin php (absolu) vers les images standard (pour hebergement centralise)
define('_ROOT_IMG_PACK', (dirname(__FILE__) . '/img_pack/'));
define('_ROOT_IMG_ICONES_DIST', (dirname(__FILE__) . '/img_pack/icones/'));
// Fichiers de langue
define('_DIR_LANG', (_DIR_RESTREINT . 'lang/'));
// Le charset par defaut lors de l'installation
define('_DEFAULT_CHARSET', 'utf-8');
// les repertoires devant etre TOUJOURS accessibles en ecriture
$GLOBALS['test_dirs'] = array(_DIR_CACHE, _DIR_IMG, _DIR_SESSIONS);
// qq chaines standard
define('_ACCESS_FILE_NAME', '.htaccess');
define('_AUTH_USER_FILE', '.htpasswd');
define('_DOCTYPE_ECRIRE', "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>\n");
define('_SPIP_PATH', './:squelettes/:dist/:formulaires/:ecrire/');
// *********** traiter les variables ************
// Recuperer les superglobales $_GET si non definies
// (en theorie c'est impossible depuis PHP 4.0.3, cf. track_vars)
// et les identifier aux $HTTP_XX_VARS
foreach (array('_GET', '_POST', '_COOKIE', '_SERVER') as $_table) {
$http_table_vars = 'HTTP'.$_table.'_VARS';
if (!is_array($GLOBALS[$_table])) {
$GLOBALS[$_table] = array();
if (is_array($GLOBALS[$http_table_vars]))
$GLOBALS[$_table] = & $GLOBALS[$http_table_vars];
}
$GLOBALS[$http_table_vars] = & $GLOBALS[$_table];
}
//
// Securite
//
// Ne pas se faire manger par un bug php qui accepte ?GLOBALS[truc]=toto
if (isset($_REQUEST['GLOBALS'])) die();
// nettoyer les magic quotes \' et les caracteres nuls %00
spip_desinfecte($_GET);
spip_desinfecte($_POST);
spip_desinfecte($_COOKIE);
# if (@ini_get('register_globals')) // pas fiable
spip_desinfecte($GLOBALS);
// a la fin supprimer la variable anti-recursion devenue inutile
// (et meme nuisible, notamment si on teste $_POST)
unset($_GET['spip_recursions']);
unset($_POST['spip_recursions']);
unset($_COOKIE['spip_recursions']);
unset($GLOBALS['spip_recursions']);
// Par ailleurs on ne veut pas de magic_quotes au cours de l'execution
@set_magic_quotes_runtime(0);
// Remplir $GLOBALS avec $_GET et $_POST (methode a revoir pour fonctionner
// completement en respectant register_globals = off)
spip_register_globals();
// appliquer le cookie_prefix
if ($GLOBALS['cookie_prefix'] != 'spip') {
include_ecrire('inc_cookie');
recuperer_cookies_spip($GLOBALS['cookie_prefix']);
}
//
// Capacites php (en fonction de la version)
//
$GLOBALS['flag_gz'] = function_exists("gzencode"); #php 4.0.4
$GLOBALS['flag_ob'] = (function_exists("ob_start")
&& function_exists("ini_get")
&& (@ini_get('max_execution_time') > 0)
&& !strstr(ini_get('disable_functions'), 'ob_'));
$GLOBALS['flag_sapi_name'] = function_exists("php_sapi_name");
$GLOBALS['flag_revisions'] = function_exists("gzcompress");
$GLOBALS['flag_get_cfg_var'] = (@get_cfg_var('error_reporting') != "");
$GLOBALS['flag_upload'] = (!$GLOBALS['flag_get_cfg_var'] ||
(get_cfg_var('upload_max_filesize') > 0));
//
// Sommes-nous dans l'empire du Mal ?
// (ou sous le signe du Pingouin, ascendant GNU ?)
//
if (strpos($_SERVER['SERVER_SOFTWARE'], '(Win') !== false)
define ('os_serveur', 'windows');
//
// Infos sur le fichier courant
//
// Compatibilite avec serveurs ne fournissant pas $REQUEST_URI
if (!$GLOBALS['REQUEST_URI']) {
$GLOBALS['REQUEST_URI'] = $PHP_SELF;
if ($_SERVER['QUERY_STRING'] AND !strpos($_SERVER['REQUEST_URI'], '?'))
$GLOBALS['REQUEST_URI'] .= '?'.$_SERVER['QUERY_STRING'];
}
// tidy en ligne de commande (si on ne l'a pas en module php,
// ou si le module php ne marche pas)
// '/bin/tidy' ou '/usr/local/bin/tidy' ou tout simplement 'tidy'
#define('_TIDY_COMMAND', 'tidy');
//
// Module de lecture/ecriture/suppression de fichiers utilisant flock()
//
include_ecrire('inc_flock');
// Lire les meta cachees
if (lire_fichier(_DIR_SESSIONS . 'meta_cache.txt', $meta))
$GLOBALS['meta'] = @unserialize($meta);
// en cas d'echec refaire le fichier
if (!is_array($GLOBALS['meta']) AND _FILE_CONNECT) {
include_ecrire('inc_meta');
ecrire_metas();
}
// Langue principale du site
$GLOBALS['langue_site'] = $GLOBALS['meta']['langue_site'];
if (!$GLOBALS['langue_site']) include_ecrire('inc_lang');
$GLOBALS['spip_lang'] = $GLOBALS['langue_site'];
// Verifier le visiteur
verifier_visiteur();
}
// //
// Gerer les variables de personnalisation, qui peuvent provenir // Gerer les variables de personnalisation, qui peuvent provenir
// des fichiers d'appel, en verifiant qu'elles n'ont pas ete passees // des fichiers d'appel, en verifiant qu'elles n'ont pas ete passees
...@@ -881,4 +1055,22 @@ function spip_desinfecte(&$t) { ...@@ -881,4 +1055,22 @@ function spip_desinfecte(&$t) {
} }
} }
// Authentifier le visiteur s'il s'annonce
// Rq: pour que cette fonction marche depuis mes_options elle a besoin
// que quelques petites constantes soient deja initialisees
function verifier_visiteur() {
define('_DIR_SESSIONS', _DIR_RESTREINT . "data/");
if ($_COOKIE['spip_session'] OR
($_SERVER['PHP_AUTH_USER'] AND !$GLOBALS['ignore_auth_http'])) {
include_ecrire ("inc_session");
verifier_session_visiteur();
}
}
//
// INITIALISER LES CONSTANTES ET LES VARIABLES SYSTEMES DE SPIP
//
spip_initialisation();
?> ?>
...@@ -214,188 +214,17 @@ $hash_recherche_strict = ''; ...@@ -214,188 +214,17 @@ $hash_recherche_strict = '';
// Inclure le fichier ecrire/mes_options (ou equivalent) // Inclure le fichier ecrire/mes_options (ou equivalent)
// //
if (@file_exists(_FILE_OPTIONS)) { if (@file_exists(_FILE_OPTIONS)) {
include(_FILE_OPTIONS); include_once(_FILE_OPTIONS);
} }
//
// Definitions standards
//
// la taille maxi des logos (0 : pas de limite)
define('_LOGO_MAX_SIZE', 0); # poids en ko
define('_LOGO_MAX_WIDTH', 0); # largeur en pixels
define('_LOGO_MAX_HEIGHT', 0); # hauteur en pixels
// Le fichier de connexion a la base de donnees
define('_FILE_CONNECT_INS', (_DIR_RESTREINT . "inc_connect"));
define('_FILE_CONNECT',
(@is_readable(_FILE_CONNECT_INS . _EXTENSION_PHP) ?
(_FILE_CONNECT_INS . _EXTENSION_PHP)
: false));
// les repertoires annexes
define('_DIR_INCLUDE', _DIR_RESTREINT);
define('_DIR_IMG', _DIR_RACINE ."IMG/");
define('_DIR_DOC', _DIR_RACINE ."IMG/");
define('_DIR_CACHE', _DIR_RACINE ."CACHE/");
define('_DIR_SESSIONS', _DIR_RESTREINT . "data/");
define('_DIR_TRANSFERT', _DIR_RESTREINT . "upload/");
define('_DIR_PLUGINS', _DIR_RACINE . "plugins/");
define('_DIR_LOGOS', _DIR_RACINE ."IMG/");
// les fichiers qu'on y met, entre autres
define('_FILE_CRON_LOCK', _DIR_SESSIONS . 'cron.lock');
define('_FILE_MYSQL_OUT', _DIR_SESSIONS . 'mysql_out');
define('_FILE_GARBAGE', _DIR_SESSIONS . '.poubelle');
define('_FILE_META', _DIR_SESSIONS . 'meta_cache.txt');
// sous-repertoires d'images
define('_DIR_TeX', _DIR_IMG . "cache-TeX/");
// Icones
# le chemin http (relatif) vers les images standard
define('_DIR_IMG_PACK', (_DIR_RESTREINT . 'img_pack/'));
# vers les logos de type de document, standard & perso
define('_DIR_IMG_ICONES_DIST', _DIR_IMG_PACK . "icones/");
define('_DIR_IMG_ICONES', _DIR_IMG . "icones/");
# les icones de la barre d'edition des formulaires
define('_DIR_IMG_ICONES_BARRE', _DIR_IMG_PACK . "icones_barre/");
# le chemin php (absolu) vers les images standard (pour hebergement centralise)
define('_ROOT_IMG_PACK', (dirname(__FILE__) . '/img_pack/'));
define('_ROOT_IMG_ICONES_DIST', (dirname(__FILE__) . '/img_pack/icones/'));
// Fichiers de langue
define('_DIR_LANG', (_DIR_RESTREINT . 'lang/'));
// Le charset par defaut lors de l'installation
define('_DEFAULT_CHARSET', 'utf-8');
// les repertoires devant etre TOUJOURS accessibles en ecriture
$test_dirs = array(_DIR_CACHE, _DIR_IMG, _DIR_SESSIONS);
// qq chaines standard
define('_ACCESS_FILE_NAME', '.htaccess');
define('_AUTH_USER_FILE', '.htpasswd');
define('_DOCTYPE_ECRIRE', "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>\n");
define('_SPIP_PATH', './:squelettes/:dist/:formulaires/:ecrire/');
// charge les fonctions indispensables
include(_DIR_INCLUDE . 'inc_utils.php');
// *********** traiter les variables ************
// Recuperer les superglobales $_GET si non definies
// (en theorie c'est impossible depuis PHP 4.0.3, cf. track_vars)
// et les identifier aux $HTTP_XX_VARS
foreach (array('_GET', '_POST', '_COOKIE', '_SERVER') as $_table) {
$http_table_vars = 'HTTP'.$_table.'_VARS';
if (!is_array($GLOBALS[$_table])) {
$GLOBALS[$_table] = array();
if (is_array($GLOBALS[$http_table_vars]))
$GLOBALS[$_table] = & $GLOBALS[$http_table_vars];
}
$GLOBALS[$http_table_vars] = & $GLOBALS[$_table];
}
// //
// Securite // Definitions standards (charge aussi inc_flock)
// //
# on peu mettre ces deux lignes dans mes_options si on veut beneficier
// Ne pas se faire manger par un bug php qui laisse passer ?GLOBALS[truc]=toto # des definitions (notamment de $auteur_session)
if (isset($_REQUEST['GLOBALS'])) die(); define('_DIR_INCLUDE', _DIR_RESTREINT);
// nettoyer les magic quotes \' et les caracteres nuls %00 require_once(_DIR_INCLUDE . 'inc_utils.php');
spip_desinfecte($_GET);
spip_desinfecte($_POST);
spip_desinfecte($_COOKIE);
# if (@ini_get('register_globals')) // pas fiable
spip_desinfecte($GLOBALS);
// a la fin supprimer la variable anti-recursion devenue inutile
// (et meme nuisible, notamment si on teste $_POST)
unset($_GET['spip_recursions']);
unset($_POST['spip_recursions']);
unset($_COOKIE['spip_recursions']);
unset($GLOBALS['spip_recursions']);
// Par ailleurs on ne veut pas de magic_quotes au cours de l'execution
@set_magic_quotes_runtime(0);
// Remplir $GLOBALS avec $_GET et $_POST (methode a revoir pour fonctionner
// completement en respectant register_globals = off)
spip_register_globals();
// appliquer le cookie_prefix
if ($cookie_prefix != 'spip') {
include_ecrire('inc_cookie');
recuperer_cookies_spip($cookie_prefix);
}
//
// Capacites php (en fonction de la version)
//
$flag_gz = function_exists("gzencode"); #php 4.0.4
$flag_ob = (function_exists("ob_start")
&& function_exists("ini_get")
&& (@ini_get('max_execution_time') > 0)
&& !strstr(ini_get('disable_functions'), 'ob_'));
$flag_sapi_name = function_exists("php_sapi_name");
$flag_revisions = function_exists("gzcompress");
$flag_get_cfg_var = (@get_cfg_var('error_reporting') != "");
$flag_upload = (!$flag_get_cfg_var || (get_cfg_var('upload_max_filesize') > 0));
//
// Sommes-nous dans l'empire du Mal ?
// (ou sous le signe du Pingouin, ascendant GNU ?)
//
if (strpos($_SERVER['SERVER_SOFTWARE'], '(Win') !== false)
define ('os_serveur', 'windows');
//
// Infos sur le fichier courant
//
// Compatibilite avec serveurs ne fournissant pas $REQUEST_URI
if (!$REQUEST_URI) {
$REQUEST_URI = $PHP_SELF;
if ($QUERY_STRING AND !strpos($REQUEST_URI, '?'))
$REQUEST_URI .= '?'.$QUERY_STRING;
}
// tidy en ligne de commande (si on ne l'a pas en module php,
// ou si le module php ne marche pas)
// '/bin/tidy' ou '/usr/local/bin/tidy' ou tout simplement 'tidy'
#define('_TIDY_COMMAND', 'tidy');
//
// Module de lecture/ecriture/suppression de fichiers utilisant flock()
//
include_ecrire('inc_flock');
// Lire les meta cachees
if (lire_fichier(_DIR_SESSIONS . 'meta_cache.txt', $meta))
$meta = @unserialize($meta);
// en cas d'echec refaire le fichier
if (!is_array($meta) AND _FILE_CONNECT) {
include_ecrire('inc_meta');
ecrire_metas();
}
// Langue principale du site
$langue_site = $GLOBALS['meta']['langue_site'];
if (!$langue_site) include_ecrire('inc_lang');
$spip_lang = $langue_site;
// chargement des plugins : doit arriver en dernier // chargement des plugins : doit arriver en dernier
...@@ -405,9 +234,7 @@ $spip_lang = $langue_site; ...@@ -405,9 +234,7 @@ $spip_lang = $langue_site;
if (@is_readable(_DIR_SESSIONS."charger_plugins_options.php")){ if (@is_readable(_DIR_SESSIONS."charger_plugins_options.php")){
// chargement optimise precompile // chargement optimise precompile
include_once(_DIR_SESSIONS."charger_plugins_options.php"); include_once(_DIR_SESSIONS."charger_plugins_options.php");
} } else {
else
{
include_ecrire('inc_plugin'); include_ecrire('inc_plugin');
// generer les fichiers php precompiles // generer les fichiers php precompiles
// de chargement des plugins et des pipelines // de chargement des plugins et des pipelines
...@@ -436,8 +263,8 @@ OR _request('action') == 'test_dirs')) { ...@@ -436,8 +263,8 @@ OR _request('action') == 'test_dirs')) {
include_ecrire ("inc_minipres"); include_ecrire ("inc_minipres");
minipres(_T('info_travaux_titre'), "<p>"._T('info_travaux_texte')."</p>"); minipres(_T('info_travaux_titre'), "<p>"._T('info_travaux_texte')."</p>");
} }
// autrement c'est une install ad hoc (spikini...), on sait pas faire // autrement c'est une install ad hoc (spikini...), on sait pas faire
} }
// //
// Reglage de l'output buffering : si possible, generer une sortie // Reglage de l'output buffering : si possible, generer une sortie
......
...@@ -20,12 +20,6 @@ function calcule_header_et_page ($fond) { ...@@ -20,12 +20,6 @@ function calcule_header_et_page ($fond) {
$var_confirm, $var_mode; $var_confirm, $var_mode;
global $_GET, $_POST, $_COOKIE, $_SERVER; global $_GET, $_POST, $_COOKIE, $_SERVER;
// authentification du visiteur
if ($_COOKIE['spip_session'] OR
($_SERVER['PHP_AUTH_USER'] AND !$ignore_auth_http)) {
include_ecrire ("inc_session");
verifier_visiteur();
}
// multilinguisme // multilinguisme
if ($forcer_lang AND ($forcer_lang!=='non') AND !count($_POST)) { if ($forcer_lang AND ($forcer_lang!=='non') AND !count($_POST)) {
include_ecrire('inc_lang'); include_ecrire('inc_lang');
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter