Simuler un include avec une string

Mnementh640
Invité n'ayant pas de compte PHPfrance

11 mai 2008, 23:47

Bonjour à tous,

Je stocke dans ma base du code HTML simple que j'affiche ensuite en PHP5 avec un bête "echo". Mais j'aimerai stocker aussi des codes PHP dans cette base. Alors le simple "echo" ne suffit plus.

Existe-t-il une fonction qui fasse comme un "include" avec les string que je récupère de ma table ? La seule solution que je vois serait de stocker ces string dans un fichier temporaire sur le serveur puis de lancer un include dessus. Mais je préfèrerai éviter le passage fichier si possible.

Merci de votre aide !

Sylvain Caillet

Eléphant du PHP | 209 Messages

12 mai 2008, 00:00

Salut,

regarde du coté de eval : http://fr.php.net/manual/fr/function.eval.php
ça devrait pouvoir t'aider.
mais fait attention à la manière dont tu l'utilise, si un utilisateur peut stocker du code php dans ta base par exemple, ça peut être dangereux !

ViPHP
ViPHP | 5924 Messages

12 mai 2008, 00:46

La performance d'eval est par ailleurs plutôt mauvaise…

Mnementh640
Invité n'ayant pas de compte PHPfrance

12 mai 2008, 00:49

Merci du tuyau mais Eval ne s'applique pas (je crois) à un code PHP5 avec des variables, des requêtes SQL, ... Même un petit code du type
eval("$maVar='test';echo 'Ceci est un $maVar';");
ne fonctionne pas.

Sylvain

ViPHP
ViPHP | 5924 Messages

12 mai 2008, 01:53

Que veux tu dire par "ne marche pas" ? Qu'est ce qu'il te fait ce code ?

ViPHP
ViPHP | 4674 Messages

12 mai 2008, 15:21

Hey :),
Merci du tuyau mais Eval ne s'applique pas (je crois) à un code PHP5 avec des variables, des requêtes SQL, ...
Et bin tu crois mal ;-).
eval — comme son nom l'indique — évalue un code. Si tu es en PHP 4, il va évaluer le code en PHP 4, si tu es en PHP 5 ... il évaluera le code en PHP 5 ! Il suffit d'écrire ton code comme il faut, mais eval est quand même à mettre à de côté. Comme Sékil l'a dit, c'est pas très folichon côté performance ...
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 2287 Messages

12 mai 2008, 16:33

Pour compléter les interventions de Sékiltoyai et HyWaN :

- eval est effectivement un (peut-être le pire du php d'ailleurs) gouffre à performances, à éviter dès que possible.
- eval c'est un peu la boîte de pandore question sécurité : une bonne partie de la sécurité d'un serveur web provient du système de fichiers, auquel il faut avoir accès en écriture pour éxécuter du code. eval() court-circuite complètement ce schéma. A utiliser avec une grande prudence.
- enfin se pose la problématique du stockage et de la maintenance du code que tu vas transmettre à eval() : tu t'apercevras vite que phpmyadmin n'est pas l'environnement d'édition idéal.

eval() est donc dans 95% des cas une fausse bonne idée qui pose plus de problèmes qu'elle n'en résout, à déconseiller fortement.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Invité
Invité n'ayant pas de compte PHPfrance

13 mai 2008, 20:49

Ok, merci à tous de vos tuyaux. C'est donc une mauvaise idée, je vais utiliser une technique différente.

Sylvain