Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/10/2011, 14h34   #1
 
Inscription : octobre 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 7
Points : -1
Points : -1
Par défaut accès à un espace privé

bonjour,
en espérant posté au bon endroit merci de votre indulgence.
je ne parviens plus à accéder à la partie privée d'un site et j'ai ce message, que dois-je faire?

Citation:
Fatal error: Cannot redeclare html_739d17e1ccbea9bed94d9bc6206aecaf() (previously declared in /home/www/cafegeo/www/inc-calcul.php3(80) : eval()'d code:12) in /home/www/cafegeo/www/inc-calcul.php3(80) : eval()'d code on line 64
Merci d'avance pour votre aide
juvipol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 15h44   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 661
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 661
Points : 5 388
Points : 5 388
A priori, ce genre de message signale la redéfinition d'une fonction déjà existante. Ce genre de situation se produit lorsqu'on définit 2 fonctions avec le même nom (suite à un copier-coller malencontreux) ou lorsqu'on inclut deux fois le même fichier de définitions de fonctions.
Pour le premier cas, on ne peut pas faire grand-chose. Pour le second, il est recommandé d'utiliser include_once et require_once à la place de include et require (les fonctions font exactement la même chose à ceci près que si le fichier a déjà été inclus, il n'est pas réinclus)

Cela dit, vu la tête de ton nom de fonction, c'est peut-être un chouia plus compliqué...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 15h52   #3
 
Inscription : octobre 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 7
Points : -1
Points : -1
bonjour et merci d'essayer de m'aider.
si l'on a deux fois la même chose, peut-on simplement effacer une des deux informations?
J'ai édité inc-calcul.php3
voici ce que cela donne:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
<?php
 
// Ce fichier ne sera execute qu'une fois
if (defined("_INC_CALCUL")) return;
define("_INC_CALCUL", "1");
 
//
// Ce fichier calcule une page en executant un squelette.
//
 
include_ecrire("inc_meta.php3");
include_ecrire("inc_index.php3");
include_ecrire("inc_texte.php3");
include_ecrire("inc_filtres.php3");
include_ecrire("inc_lang.php3");
include_ecrire("inc_documents.php3");
include_ecrire("inc_abstract_sql.php3");
include_ecrire("inc_forum.php3");
include_ecrire("inc_debug_sql.php3");
include_local("inc-calcul-outils.php3");
 
// NB: Ce fichier peut initialiser $dossier_squelettes (old-style)
if ($f = find_in_path("mes_fonctions.php3"))
	include_local ($f);
 
// Gestionnaire d'URLs
if (@file_exists("inc-urls.php3"))
	include_local("inc-urls.php3");
else
	include_local("inc-urls-".$GLOBALS['type_urls'].".php3");
 
 
// Le squelette compile est-il trop vieux ?
function squelette_obsolete($skel, $squelette) {
	return (
		($GLOBALS['var_mode'] AND $GLOBALS['var_mode']<>'calcul')
		OR !@file_exists($skel)
		OR (@filemtime($squelette) > ($date = @filemtime($skel)))
		OR (@filemtime('mes_fonctions.php3') > $date)
		OR (@filemtime(_FILE_OPTIONS) > $date)
	);
}
 
 
# Charge un squelette (au besoin le compile) 
# et retoune le nom de sa fonction principale, ou '' s'il est indefini
# Charge egalement un fichier homonyme de celui du squelette
# mais de suffixe '_fonctions.php3' pouvant contenir:
# - des filtres
# - des fonctions de traduction de balise, de critere et de boucle
# - des declaration de tables SQL supplementaires
 
function charger_squelette ($squelette) {
	$ext = $GLOBALS['extension_squelette'];
	$nom = $ext . '_' . md5($squelette);
	$sourcefile = $squelette . ".$ext";
 
	// le squelette est-il deja en memoire (INCLURE  a repetition)
	if (function_exists($nom))
		return $nom;
 
	$phpfile = _DIR_CACHE . 'skel_' . $nom . '.php';
 
	// le squelette est-il deja compile et perenne ?
	if (!squelette_obsolete($phpfile, $sourcefile)
	AND lire_fichier ($phpfile, $contenu,
	array('critique' => 'oui', 'phpcheck' => 'oui'))) 
		eval('?'.'>'.$contenu);
 
	// sinon, charger le compilateur et verifier que le source est lisible
	if (!function_exists($nom)) {
		include_local("inc-compilo.php3");
		lire_fichier ($sourcefile, $skel);
	}
 
	// Le fichier suivant peut contenir entre autres:
	// 1. les filtres utilises par le squelette
	// 2. des ajouts au compilateur
	// Le point 1 exige qu'il soit lu dans tous les cas.
	// Le point 2 exige qu'il soit lu apres inc-compilo
	// (car celui-ci initialise $tables_principales) mais avant la compil
	$f = $squelette . '_fonctions.php3';
	if (@file_exists($f)) include($f);
 
	if (function_exists($nom)) return $nom;
 
	$skel_code = calculer_squelette($skel, $nom, $ext, $sourcefile);
	// Tester si le compilateur renvoie une erreur
 
	if (is_array($skel_code))
		erreur_squelette($skel_code[0], $skel_code[1]);
	else {
 
		if ($GLOBALS['var_mode'] == 'debug') {
			include_ecrire("inc_debug_sql.php3");
			debug_dumpfile ($skel_code, $nom, 'code');
		}
		eval('?'.'>'.$skel_code);
		if (function_exists($nom)) {
			ecrire_fichier ($phpfile, $skel_code);
			return $nom;
		} else {
			erreur_squelette($sourcefile, _L('Erreur de compilation'));
		}
	}
}
 
# Provoque la recherche du squelette $fond d'une $lang donnee,
# et l'applique sur un $contexte pour un certain $cache.
# Retourne un tableau de 3 elements:
# 'texte' => la page calculee
# 'process_ins' => 'html' ou 'php' si presence d'un '< ?php'
# 'invalideurs' => les invalideurs (cf inc-calcul-squel)
 
# En cas d'erreur process_ins est absent et texte est un tableau de 2 chaines
 
# La recherche est assuree par la fonction chercher_squelette,
# definie dans inc-chercher, fichier non charge si elle est deja definie
# (typiquement dans mes_fonctions.php3)
 
function cherche_page ($cache, $contexte, $fond)  {
	global $delais;
 
	if (!function_exists('chercher_squelette'))
		include_local("inc-chercher-squelette.php3");
 
	// Choisir entre $fond-dist.html, $fond=7.html, etc?
	$id_rubrique_fond = 0;
	// Chercher le fond qui va servir de squelette
	if ($r = sql_rubrique_fond($contexte))
		list($id_rubrique_fond, $lang) = $r;
	if (!$lang)
		$lang = lire_meta('langue_site');
	// Si inc-urls ou un appel dynamique veut fixer la langue, la recuperer
	$lang = $contexte['lang'];
 
	if (!$GLOBALS['forcer_lang'])
		lang_select($lang);
 
	$skel = chercher_squelette($fond,
			$id_rubrique_fond,
			$GLOBALS['spip_lang']);
 
	// Charger le squelette et recuperer sa fonction principale
	// (compilation automatique au besoin) et calculer
 
	$page = array();
 
	if ($skel) {
		if ($fonc = charger_squelette($skel))
		  $page = $fonc(array('cache' => $cache), array($contexte));
 
		// Passer la main au debuggueur)
		if ($GLOBALS['var_mode'] == 'debug')
		  {
			include_ecrire("inc_debug_sql.php3");
			debug_dumpfile ($page['texte'], $fonc, 'resultat');
		  }
	}
 
	// Entrer les invalideurs dans la base
	if ($delais>0) {
		include_ecrire('inc_invalideur.php3');
		maj_invalideurs($cache, $page['invalideurs'], $delais);
	}
 
	// Retourner la structure de la page
 
	return $page;
}
 
 
//
// Contexte : lors du calcul d'une page spip etablit le contexte a partir
// des variables $_GET et $_POST, et leur ajoute la date
// Note : pour hacker le contexte depuis le fichier d'appel (article.php3),
// il est recommande de modifier $_GET['toto'] (meme si la page est
// appelee avec la methode POST).
//
function calculer_contexte() {
	global $_GET, $_POST;
 
	foreach($_GET as $var => $val) {
		if (strpos($var, 'var_') !== 0)
			$contexte[$var] = $val;
	}
	foreach($_POST as $var => $val) {
		if (strpos($var, 'var_') !== 0)
			$contexte[$var] = $val;
	}
 
	if ($GLOBALS['date'])
		$contexte['date'] = $contexte['date_redac'] = normaliser_date($GLOBALS['date']);
	else
		$contexte['date'] = $contexte['date_redac'] = date("Y-m-d H:i:s");
 
	return $contexte;
}
 
function calculer_page_globale($cache, $contexte_local, $fond) {
 
	// Gestion des URLs personnalises - sale mais historique
	if (function_exists("recuperer_parametres_url")) {
		global $contexte;
		$contexte = $contexte_local;
		recuperer_parametres_url($fond, nettoyer_uri());
 
		// remettre les globales pour le bouton "Modifier cet article"
		if (is_array($contexte))
			foreach ($contexte as $var=>$val)
				if (substr($var,0,3) == 'id_')
					$GLOBALS[$var] = $val;
		$contexte_local = $contexte;
	}
 
	// si le champ chapo commence par '=' c'est une redirection.
	if ($id_article = intval($contexte['id_article'])) {
		if ($art = sql_chapo($id_article)) {
			$chapo = $art['chapo'];
			if (substr($chapo, 0, 1) == '=') {
				include_ecrire('inc_texte.php3');
				list(,$url) = extraire_lien(array('','','',
				substr($chapo, 1)));
				if ($url) { // sinon les navigateurs pataugent
					$url = texte_script(str_replace('&amp;', '&', $url));
					$page = array('texte' => "<".
					"?php redirige_par_entete('$url'); ?" . ">",
					'process_ins' => 'php');
				}
			}
		}
	}
 
	// Go to work !
	if (!$page)
		$page = cherche_page($cache, $contexte_local, $fond);
 
	$signal = array();
	foreach(array('id_parent', 'id_rubrique', 'id_article', 'id_auteur',
	'id_breve', 'id_forum', 'id_secteur', 'id_syndic', 'id_syndic_article',
	'id_mot', 'id_groupe', 'id_document') as $val) {
		if ($contexte_local[$val])
			$signal['contexte'][$val] = intval($contexte_local[$val]);
	}
 
	$page['signal'] = $signal;
 
	return $page;
}
 
 
 
function calculer_page($chemin_cache, $elements, $delais, $inclusion=false) {
	global $_POST;
 
	// Inclusion
	if ($inclusion) {
		$contexte_inclus = $elements['contexte'];
		$page = cherche_page($chemin_cache,
			$contexte_inclus, $elements['fond']);
	}
	else {
		$page = calculer_page_globale($chemin_cache,
			$elements['contexte'],
			$elements['fond']);
	}
 
	$page['signal']['process_ins'] = $page['process_ins'];
	$signal = "<!-- ".str_replace("\n", " ",
	serialize($page['signal']))." -->\n";
 
	// Enregistrer le fichier cache
	if ($delais > 0 AND $GLOBALS['var_mode'] != 'debug'
	AND !count($_POST))
		ecrire_fichier($chemin_cache, $signal.$page['texte']);
 
	return $page;
}
?>
juvipol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 16h44   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 661
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 661
Points : 5 388
Points : 5 388
Euh... a priori, oui, si tu as deux fonction identiques, inutile de les garder. A condition d'être sûr qu'elles font la même chose.

En dehors de ça, je dois avouer que ton code dépasse mes capacités de compréhension... En même temps, avec des extensions en .php3, j'imagine qu'il a quelques années et donc que certaines façons de faire de l'époque ont évoluées...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 17h13   #5
 
Inscription : octobre 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 7
Points : -1
Points : -1
Le problème c'est que le code c'est un peu du chinois pour moi, sur celui que j'ai donné tu ne vois aucune redite?
juvipol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 17h54   #6
Candidat au titre de Membre du Club
 
Homme
Inscription : octobre 2007
Messages : 10
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : octobre 2007
Messages : 10
Points : 10
Points : 10
Salut,

Tu as de la chance parce que pour moi le code c'est pas du chinois

Déjà tu peux commencer par vérifier que ton hébergeur continue de supporter la version 3 de php, mais je crois que c'est le cas sinon tu aurais eu un autre type d'erreurs (en plus ya des fonction comme eval() qui sont utilisées, donc contrairement à ce que disent les extensions de tes fichiers, ton code est interprété avec un php>4).

Ensuite, en essayant de comprendre la logique de ton - vieux - code, la fonction charger_squelette() va chercher à inclure la fonction principale d'un squelette qui lui est passé en argument. voici les 3 lignes "usual suspectes"
Code :
1
2
3
4
$ext = $GLOBALS['extension_squelette'];
$nom = $ext . '_' . md5($squelette);
$sourcefile = $squelette . ".$ext";
Remarque que le nom du squelette est hashé via md5,
c'est ce qui explique le nom improbable de ta fonction (html_739d17e1ccbea9bed94d9bc6206aecaf) ...

Enfin il y a ces lignes :

Code :
1
2
3
4
5
6
 
$phpfile = _DIR_CACHE . 'skel_' . $nom . '.php';
 
if (!squelette_obsolete($phpfile, $sourcefile) ...
 
eval('?'.'>'.$contenu);
Elle vont servir à lire et à compiler le squelette s'il n'est pas "obsolète" (selon la définition de la fonction squelete_obsolete)

Donc Ce qui pose probablement problème c'est l'existence/ou pas du fichier
"skel_html_739d17e1ccbea9bed94d9bc6206aecaf.php" dans le dossier /www/_DIR_CACHE. Tu dois probablement le supprimer/renommer et tout devrait rentrer dans l'ordre .

PS: Pour _DIR_CACHE, c'est une constante (qui représente un chemin dans ton arborescence) surement définie au tout début de l'un de tes fichiers que tu as inclus (surement "inc_meta.php3" )
foberken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 19h25   #7
 
Inscription : octobre 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 7
Points : -1
Points : -1
J'ai effectivement ce fichier et en fait avant que tu ne postes ton message, je l'ai repéré, à l'intérieur, il y avait deux fois les mêmes infos. J'ai supprimé une version et apparemment ça fonctionne... pour l'instant
en tous les cas un grand merci à toi car même si je n'avais pas trouvé entre temps, tu m'aurais été d'une grande aide.
Et même un très grand merci
bonne soirée à toi et bonne fin de semaine
juvipol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 20h04   #8
Candidat au titre de Membre du Club
 
Homme
Inscription : octobre 2007
Messages : 10
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : octobre 2007
Messages : 10
Points : 10
Points : 10
Bah de rien, c’était un plaisir de passer 20min à jouer à l'interprète Chinois-HumanReadeable
foberken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2012, 16h03   #9
 
Inscription : octobre 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 7
Points : -1
Points : -1
Par défaut pb spip

Salut Forboken,
Comme la fois dernière tu m'as bien aidé, peut-être le pourras-tu encore?
la page d'accueil du site est bizarre: à savoir, sous les rubriques, j'ai un espace blanc immense, on m'a signalé du texte en espagnol pour des produits destinés à des adultes consentants!
D'après toi de quoi s'agit-il?
http://www.cafe-geo.net/

Merci d'avance
juvipol est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h11.


 
 
 
 
Partenaires

Hébergement Web