Page 1 sur 1

Simuler un include avec une string

Posté : 11 mai 2008, 23:47
par Mnementh640
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

Posté : 12 mai 2008, 00:00
par SpintroniK
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 !

Posté : 12 mai 2008, 00:46
par Sékiltoyai
La performance d'eval est par ailleurs plutôt mauvaise…

Posté : 12 mai 2008, 00:49
par Mnementh640
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

Posté : 12 mai 2008, 01:53
par Sékiltoyai
Que veux tu dire par "ne marche pas" ? Qu'est ce qu'il te fait ce code ?

Posté : 12 mai 2008, 15:21
par Hywan
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 ...

Posté : 12 mai 2008, 16:33
par Calimero
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.

Posté : 13 mai 2008, 20:49
par Invité
Ok, merci à tous de vos tuyaux. C'est donc une mauvaise idée, je vais utiliser une technique différente.

Sylvain