[SPIP] ~maj v2.1.25-->2.1.26
[velocampus/web/www.git] / www / ecrire / inc / php3.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2014 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined('_ECRIRE_INC_VERSION')) return;
14
15 // Gestion ou simulation du register_globals a 'On' (PHP < 4.1.x)
16 // Code a l'agonie, heureusement.
17 // NB: c'est une fonction de maniere a ne pas pourrir $GLOBALS
18 // http://doc.spip.org/@spip_register_globals
19 function spip_register_globals($type='') {
20
21 spip_log("spip_register_globals($type)");
22
23 // Liste des variables dont on refuse qu'elles puissent provenir du client
24 $refuse_gpc = array (
25 # inc-public
26 'fond', 'delais' /*,
27
28 # ecrire/inc_auth (ceux-ci sont bien verifies dans $_SERVER)
29 'REMOTE_USER',
30 'PHP_AUTH_USER', 'PHP_AUTH_PW'
31 */
32 );
33
34 // Liste des variables (contexte) dont on refuse qu'elles soient cookie
35 // (histoire que personne ne vienne fausser le cache)
36 $refuse_c = array (
37 # inc-calcul
38 'id_parent', 'id_rubrique', 'id_article',
39 'id_auteur', 'id_breve', 'id_forum', 'id_secteur',
40 'id_syndic', 'id_syndic_article', 'id_mot', 'id_groupe',
41 'id_document', 'date', 'lang',
42 // et celles relatives aux raccourcis (cf inc/texte)
43 'class_spip', 'class_spip_plus',
44 'toujours_paragrapher', 'ligne_horizontale',
45 'spip_raccourcis_typo',
46 'puce', 'puce_prive', 'puce_rtl', 'puce_prive_rtl',
47 'debut_intertitre', 'fin_intertitre',
48 'debut_gras', 'fin_gras', 'debut_italique', 'fin_italique',
49 'ouvre_note', 'ferme_note', 'les_notes', 'compt_note',
50 'ouvre_ref', 'ferme_ref'
51 );
52
53 // Si les variables sont passees en global par le serveur, il faut
54 // faire quelques verifications de base
55 if ($type) {
56 foreach ($refuse_gpc as $var) {
57 if (isset($GLOBALS[$var])) {
58 if (
59 // demande par le client
60 $_REQUEST[$var] !== NULL
61 // et pas modifie par les fichiers d'appel
62 AND $GLOBALS[$var] == $_REQUEST[$var]
63 ) // Alors on ne sait pas si c'est un hack
64 die ("register_globals: $var interdite");
65 }
66 }
67 foreach ($refuse_c as $var) {
68 if (isset($GLOBALS[$var])) {
69 if (
70 isset ($_COOKIE[$var])
71 AND $_COOKIE[$var] == $GLOBALS[$var]
72 )
73 define ('spip_interdire_cache', true);
74 }
75 }
76 }
77
78 // sinon il faut les passer nous-memes, a l'exception des interdites.
79 // (A changer en une liste des variables admissibles...)
80 else {
81 foreach (array('_SERVER', '_COOKIE', '_POST', '_GET') as $_table) {
82 foreach ($GLOBALS[$_table] as $var => $val) {
83 if (!isset($GLOBALS[$var]) # indispensable securite
84 AND isset($GLOBALS[$_table][$var])
85 AND ($_table == '_SERVER' OR !in_array($var, $refuse_gpc))
86 AND ($_table <> '_COOKIE' OR !in_array($var, $refuse_c)))
87 $GLOBALS[$var] = $val;
88 }
89 }
90 }
91
92 }
93 ?>