THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


Bonjour,

Je suis en train de tester la possibilité d'insérer du code php dans un squelette. Ca ne marche pas chez moi.

J'ai un fichier test.php :

<?php
    $fond="test.html";
    $pageret=1;
    $parsephp=1;
    include("fonctions/moteur.php");
?>

et un fichier test.html :

<html>	
<body>
<?php 
echo 'coucou';
?>
</body>
</html>

Dans ces conditions le navigateur affiche une page blanche, et si je demande à afficher le code source de la page j'obtiens :

<html>	
<body>
<? 
echo 'coucou';
?>
</body>
</html><?

Je suis particulièrement intrigué par le <? à la fin .... Bizarre bizarre.

J'ai testé avec la 1.2.2 et également avec les 1.3 beta 2, même résultat.

Qu'en est il chez vous ?

Cordialement

Fabrice

Offline


Si tu utilises easyphp pour tes test en local, il y a de très fortes chances que ça ne fonctionnera pas. Je ne sais pas d'où ça vient, si tu trouves la raison, hésite pas à nous en faire part.

cf http://forum.thelia.fr/viewtopic.php?id=492

Offline


Merci pour ta réponse.

Par contre, je travaille avec WAMP, mais j'ai fait pas mal de changement dans le php.ini. Je vais essayer sur une installation de WAMP clean. et je vous tiendrai au courant.

Cordialement

Fabrice

Offline


Je viens de tester avec WAMP5 et easyPHP 1.8 (avec php5)
les deux le passe en local,

à ceci près que j'ai remplacé la première balise par <?PHP , (because...PHP5
ignore le <? ).

Last edited by david49 (04-07-2007 10:16:27)

Offline


Merci David,

Dans mon exemple j'avais utilisé la balise <?php (le <? était ce qui apparaissait dans le source HTML de la page).

Mais c'est vrai que en faisant comme toi, en mettant <?PHP ça marche (avec des majuscules).

Est ce spécifique à ma config que cela ne marche que avec des balises PHP en majuscules ? Ou constatez vous la même chose chez vous ?

Par contre la balise officielle pour le php est <?php ?>  (en minuscule) :

la doc officielle php wrote:

There are four different pairs of opening and closing tags which can be used in php. Two of those, <?php ?> and <script language="php"> </script>, are always available. The other two are short tags and ASP™ style tags, and can be turned on and off from the php.ini configuration file. As such, while some people find short tags and ASP™ style tags convenient, they are less portable, and generally not recommended.

Cordialement

Fabrice

Last edited by fabrice (04-07-2007 11:01:58)

Offline


Je n'ai pas testé sous la version 1.8... J'essaierai ce soir avec la balise <?PHP. A tester aussi avec une version de php 4 sous easyphp smile

Offline


<?php ne fonctionne pas plus chez moi, ni sur wamp ni sur easyphp(php5) , il faut mettre la balise en majuscule.

Offline


j'utilise des scripts php dans des pages html sans problème avec easyPHP 1.8 et PHP 4.
compte tenu de la manière dont moteur.php gère les instructions <?php ..., l'instruction <?PHP ne devrai pas fonctionner ! Vous avez dit bizarre ?

Offline


Pour continuer dans le sujet...

je suis le seul à avoir une balise en bas de page quand j'active le parseur
ou vous avez aussi ce *§?? de bug?



En passant;  jhr,  vu que tu tournes sous easyPHP1.8, t'as pas de soucis avec l'éditeur de description dans le B.O?
(bon je sais ça n'a rien à voir, mais j'ai WAMP5 et Easy ,

et je préfère Easy [sur lequel j'ai pu greffer perl, alors que sur WAMP5 y'a plus de mod perl dispo(enfin il me semble...)],
mais pas moyen de modifier la description après la création du produit, ni avec explorer, ni avec firefox sur Easy...d'où le passage sur WAMP5.

Offline


En changeant un peu une ligne dans fonction/moteur.php du côté de la ligne 240, on a:

	if($parsephp == 1){
    	$res=str_replace('<'.'?php','<'.'?',$res);
    	$res='?'.'>'.trim($res).'<'.'?';
    	$res = eval($res);
	}

J'ai remplacé par:

	if($parsephp == 1){
    	$res=str_replace('<'.'?php','<'.'?',$res);
    	$res='?'.'>'.trim($res);
    	$res = eval($res);
	}

Et ça supprime la balise fantôme.
Mais en fait je ne sais pas encore si cela à une incidence sur une autre partie de script...   

Et quand on regarde la portion de script, et qu'on focalise sur le str_replace , c'est là que ça devient vraiment bizarre le truc des majuscules hmm .

Last edited by david49 (07-07-2007 17:48:19)

Offline


La fonction eval rajoute automatiquement les balises <?php et ?> respectivement au début et à la fin de la chaîne passée en paramètre. Le fait de rajouter des balises ouvrantes et fermantes à la chaîne permet de simuler une inclusion classique de php dans une page html.

J'espère avoir été clair smile

Offline


Mais, pourquoi des majuscules?

Offline


Je pense que ca a quelque chose à voir avec la directive short_open_tag dans le php.ini
http://fr2.php.net/ini.core

D'autres idées ?

Offline


Le ou les problèmes viennent de la fonction eval(). La moindre petite erreur (simple cote au lieu de double cote par exemple) dans le code qui est lu et interpreté entraîne le message d'erreur "eval d'code". De plus certaines balises  XML doivent être mise en echo PHP pour les faire passer. Une fois que tous ces petits soucis sont réglés, il y a très peu de chose qui sont parsable. Les fonctions PHP avec variable sont interprétées par THELIA et ça BUG à MORT. C'est vrai que l'on peut faire des ECHO sur des sessions par exemple mais j'ai essayé des simples conditions en IF ou en SWITCH avec des variables transmises en $_GET et là ça ne veut pas. Je l'attendais cette fonction "$parsephp" mais ce n'est pas à la hauteur du reste de THELIA.
Ma config:
WIN 98
EasyPHP 1.8
IE 6 et Firefox2

  • yoan
  • Cofondateur Thelia

Offline


Nous avons mis en place un système de plugin.
Comme je le dis depuis le début, nous ne souhaitons pas nous accer sur le mélange de code PHP dans les templates THELIA.

Il suffit de développer un plugin propre, contenant votre code. Ce sera bien plus propre, pas besoin de fonction eval et tout sera externalisé.

C'est pour moi la meilleure façon.

Je suis obligé d'utiliser une fonction eval pour pouvoir interpreter le code que vous mettez dans vos pages ...


http://yoandemacedo.com

Cofondateur de la solution Thelia 1.x

Offline


La construction de plugin reste lourde pour par exemple transmettre et interpréter de simple message entre fichiers ou réagir à certaines actions du client. Je vais regarder s'il n'est pas plus aisé de passer par la bdd.

Offline


Une idée pour maintenir cette fonction qui est quand même assez rapide serait de créer une boucle THELIA pour dire au programme de ne pas interpréter (strictement) ce qu'il y a dans la boucle et là eval () devrait pouvoir intervenir non?

Offline


Vous venez sans le savoir de me sauver la vie avec vos histoires de PHP...

ça fait 3 jours et 3 nuits que je m'echigne a savoir pourquoi ma page d'acceuil avec formulaire d'inscription a la newsletter en php ne marche plus depuis mon transfert vers un serveur virtuel...

Bon je n'ai toujours pas compris pourquoi, mais en mettant PHP a la place de php ben ça marche...

Notez que sur les reste de mon site il y a aussi des bout de php (désolée yoan) en minuscule eux et qui marchent parfaitement...

Va comprendre.
Je hais l'informatique.

En tout cas MERCI !


{TETE DE LARD} Concept store/Galerie {Designer toys, Livres d'art, Badges, T-shirts et curiosités...}