erreur dans template.php phpwiki

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : erreur dans template.php phpwiki

par kerfam » 04 mai 2007, 16:43

Je ne vois pas ou peut-être ce } qui traine et aussi les ?> sans les <?php

par sadeq » 04 mai 2007, 12:40

tu vois qu'il y a un } qui traine
tu vois aussi des ?> sans un début <?php c'est bizarre ça

par kerfam » 04 mai 2007, 12:40

Quand j'utilise firefox :
les liens dans le menu fonctionne mais pas dans la partie du milieu

Quand j'utilise IE6 :
les liens dans le menu fonctionne et dans la partie du milieu aussi

par kerfam » 04 mai 2007, 12:31

voila ce que j'ai :

stuff. * * NS/MO/IE/Op Browsers before 4.0 don't like that. */ if (browserVersion() >= 4.0) echo "<","?xml version=\"1.0\" encoding=\"", $charset, "\"?", ">\n"; ?> \n"; } ?> stuff. * * NS/MO/IE/Op Browsers before 4.0 don't like that. */ if (browserVersion() >= 4.0) echo "<","?xml version=\"1.0\" encoding=\"", $charset, "\"?", ">\n"; ?> _print( Template('head') );?> _print( Template('body') );?> \n"; } ?>

Pour info j'utilise Firefox 2

par Invité » 04 mai 2007, 12:28

voila ce que j'ai :

stuff. * * NS/MO/IE/Op Browsers before 4.0 don't like that. */ if (browserVersion() >= 4.0) echo "<","?xml version=\"1.0\" encoding=\"", $charset, "\"?", ">\n"; ?> \n"; } ?> stuff. * * NS/MO/IE/Op Browsers before 4.0 don't like that. */ if (browserVersion() >= 4.0) echo "<","?xml version=\"1.0\" encoding=\"", $charset, "\"?", ">\n"; ?> _print( Template('head') );?> _print( Template('body') );?> \n"; } ?>

par sadeq » 04 mai 2007, 12:10

pfff, pourtant ça marche chez moi.
Peux-tu me débuguer, en faisant un echo avant l'instruction

Comme ça :
//débug
echo $this->_tmpl; 
//débug
echo $this->_munge_input($this->_tmpl); exit;

eval('?>' . $this->_munge_input($this->_tmpl));

par kerfam » 04 mai 2007, 11:54

Désolé, tout à l'heure je voulais dire avant
J'ai fait un copier-coller du code, relancer apache, mais toujours le même problème

par sadeq » 04 mai 2007, 11:31

pas après, avant le $.

Désolé, dans ma dernière réponse l'anti-slash n'a pas été affiché.
Je reposte la modif à faire:
$repl[] = '<?php \$this->_print(\\1);?>';

par kerfam » 04 mai 2007, 10:27

Bonjour
J'ai rajouter l'anti-slash après $this->_print(\1);?>';
mais ça ne marche toujours pas

par sadeq » 03 mai 2007, 12:45

Ok, Je pense qu'il faut échapper le $ dans le code contenu dans $repl, c'est à dire ajouter un anti-slash avant le $ dans cette ligne:

Code : Tout sélectionner

$repl[] = '<?php \$this->_print(\\1);?>';

par kerfam » 03 mai 2007, 10:53

voici le code de _munge_input :

Code : Tout sélectionner

function _munge_input($template) { // Convert < ?plugin expr ? > to < ?php $this->_printPluginPI("expr"); ? > $orig[] = '/<\?plugin.*?\?>/se'; $repl[] = "\$this->_mungePlugin('\\0')"; // Convert < ?= expr ? > to < ?php $this->_print(expr); ? > $orig[] = '/<\?=(.*?)\?>/s'; $repl[] = '<?php $this->_print(\1);?>'; return preg_replace($orig, $repl, $template); }
Voila ce qu'il y a après la ligne 40 :

Code : Tout sélectionner

$request->_TemplatesProcessed[$name] = 1; $this->_tmpl = fread($fp, filesize($file)); fclose($fp);

par jojolapine » 03 mai 2007, 10:35

le codes des méthodes suivantes:
  • _munge_input()
    _tmpl()
et au passage, si ce n'est pas toi qui a fait le code, la meilleur solution , c'est de demander des comptes à celui qui l'a fait!

par kerfam » 03 mai 2007, 09:47

Ce n'est pas moi qui fait le code ! ! ! !

ligne 40 : }
ligne 146 : eval('?>' . $this->_munge_input($this->_tmpl));

tu veux quoi de plus !

par sadeq » 03 mai 2007, 09:24

Je crains qu'on se comprend pas là.
Vu l'instruction
eval('?>' . $this->_munge_input($this->_tmpl));
Cette dernière appelle la méthode $this->_munge_input() de la classe en cours où l'erreur est signalée à la line 40.

Le code que tu nous a donné ne correspond pas à la méthode $this->_munge_input() OK :!:

par kerfam » 03 mai 2007, 08:44

le code tu l'as plus haut