JeuWeb - Crée ton jeu par navigateur
Executer une variable - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Executer une variable (/showthread.php?tid=3909)

Pages : 1 2


Executer une variable - Thedeejay - 18-04-2009

Salut tout le monde!
J'ai un petit probleme avec un script:

en gros un programme bureau m'envoie (enfin ca vous vous en foutez de ou elle viens) une variable qui contient un code php/html, une page complete quoi, et je soushaiterais l'executer...

Malheureusement, j'ai essayé avec eval() mais ca ne marche pas... si quelqu'un a des idées, je suis prenneur...

Merci! si vous avez des questions...


RE: Executer une variable - wild-D - 18-04-2009

eval est fonctionnel ?

sinon faut faire gaffe que ton code soit bien valide; sinon eval retourne rien.

et y a une petite différence subtile c'est que ton code dans eval est considéré comme du php de base^^
donc c'est pas comme avec un include()

eval('<html><?php echo "bug"; ?>'); va pas marcher
faut faire eval('?><code>magique du html</code><?php echo "pas bug";');

^^ enfin si c'est pas sur ça que tu trébuche alors; faudra plus d'info


RE: Executer une variable - Thedeejay - 18-04-2009

ben en gros je veux evaler la variable var tel que (exmpleSmile

$var = "<html>
<?php echo headers(); ?>
<body>
<?php connexion à la bdd, while etc. ?>
<p><?php echo $données['nom']; ?></p>
</body>
</html>";

et j'ai essayé d'ajouter ?> et <?php aux debut/fin mais ca marche pas...

EDIT: je préscise aussi: je ne peux pas passer par une page externe (donc enregistrer et inclure)


RE: Executer une variable - Ruz - 18-04-2009

bah, dans ce cas, va falloir traiter ta variable... extraire le HTML du php...
tu recrées par après ta page en collant le HTML au code php évalué...

j'vois pas trop comment tu pourrais faire autrement...


RE: Executer une variable - jo_link_noir - 18-04-2009

Avec les fonction ob_ ?

Code PHP :
<?php 
$var
= eval("ob_start();

?>plop<?php
echo ' !';

\$buffer = ob_get_contents();
ob_end_clean();
return \$buffer;"
);



RE: Executer une variable - wild-D - 18-04-2009

... pourquoi tu rajoute <?php à la fin ?

et tu as quoi comme erreur ? (parce que là à part dire que ça marche pas. )


RE: Executer une variable - Ruz - 18-04-2009

pour l'erreur, c'est pas compliqué à comprendre...
Code PHP :
<?php 
$var
= "<html>
<?php echo headers(); ?>
<body>
<?php connexion à la bdd, while etc. ?>
<p><?php echo
$données['nom']; ?></p>
</body>
</html>"
;
eval ('<html>'); => une erreur (ou alors, rajouter des "echo" devant... et les guillemets pour encadrer l'html)

les fonctions ob_, j'avoue pas connaitre...


RE: Executer une variable - Thedeejay - 19-04-2009

ah oui a ce moment la je pourait traiter la variable pour transformer les <?php en "; et les ?> en echo"
woops vait pas vu les reponses précédentes...

j'ai ajouté le <?php à la fin car j'avais vu ca sur un forum... sinon les ob_ je ne connais pas ca marche comment?

Et enfin la je suis pas sur mon ordi, je vous enverait l'erreur demain


RE: Executer une variable - jo_link_noir - 19-04-2009

Y a une explication avec ob_start
En fait, tous ce qui est normalement afficher sera mi dans un buffer, ça permet par ex de faire des traitement supplémentaire avant d'afficher la page, l'enregistrer dans des fichiers, avoir un système de cache, ect.
Dans mon exemple ça récupère la sortie : "plop !" et la met dans $var

Bonne nuit


RE: Executer une variable - Allwise - 19-04-2009

Petite question, elle vient d'où ta variable $var ? A ta place, je laisserais tomber la fonction eval et je tournerais le problème autrement. Dans ton cas par exemple je verrai bien l'utilisation d'un système quelconque de template.
Sinon, si le contenu de ta variable vient d'un fichier, et que ce fichier est dispo via le web, tu peux tout simplement récupérer son contenu via son adresse web, non pas via le système de fichiers.
Exemple : au lieu de faire $var = file_get_contents('mon/fichier.php'); tu fais $var = file_get_contents('http://monsite/mon/fichier.php');
comme ça $var contient la page toute parsée, et t'as pas à t'embêter avec la fonction eval.