Bonjour,

Je chipote depuis un moment maintenant avec l'idée plutôt pratique du WEBROOT..

Seulement,je viens de me rendre compte d'un problème..

mes pages sont contenues dans ma db, et, pour incruster une image au milieu du texte,
je dois procéder de cette manière <img src="<?php echo WEBROOT;>lien/vers/image.png" />

ce qui marche très bien du moment ou le code est "en brut" sur la page..
quand je l'importe de la db, il n'interprète pas les balises php..

je ne doute pas de la sureté de ce système, mais, dans le cas présent, ca me pose un souci...

J'ai cherché un et trouvé la fonction "eval" que tous les forums s'empressent de bannir vu les failles que cela amène au niveau sécurité..

Qui aurais une idée de comment régler ca?

(Je ne peux pas faire autrement que de laisser les balises php dans la db parce que, le WEBROOT n'est pas le meme si le site est en local ( '/monsite/' ) ou si il est en ligne ( '/' )

Merci d'avance :)

iFabe

4 réponses


Grafikart
Réponse acceptée

Oublie ton idée redemander d'évaluer du code sortie de la base c'est un peu lourd. Pourquoi ne pas mettre une chaine de caractère à la place de la racine

mon super text   
<img src="WEBROOTimages/monImage.png" />  
<p> Encore un texte... </p>

Puis de faire un

str_replace('WEBROOT',WEBROOT,$toncontenu)

Tu veux dire que ta constante WEBROOT est définie via ta base de données ?

ifabe
Auteur

Nop, en fait, je te montre..
j'ai, dans une page, des images entre des textes,
Je me suis fait une petite condition qui donne

if($_SERVER'HTTP_HOST'] != "localhost"){ define("WEBROOT", "/"); }
else{
   preg_match('/\/(^\/]+)/i' , $_SERVER'REDIRECT_URL'] , $matches);
   define("WEBROOT", "/$matches[1]/");
   }

Comme ça, je récupère juste ce qu'il me faut avec le preg_match,
donc, mon WEBROOT a comme valeur " /monSite/ " en local, et online, par contre, c'est " / "
Jusque la, tout va bien

dans ma db, sur certaines pages qui contiennent des images, j'ai donc (en exemple)

<p> mon super text</p> 
<img src="<?php echo WEBROOT;?>images/monImage.png" />
<p> Encore un texte... </p>

Code qui fonctionne tres bien, du moment ou il n'est pas dans ma db mais, directement sur la page:

MAIS, quand je fais ma $req que je j' echo $data'contenuPage']; j'ai, :

mon super text 
<img src="<?php echo WEBROOT;?>images/monImage.png" />
<p> Encore un texte... </p>

Sans aucune interprétation du php et j'aimerai forcément qu'il me sorte un

<img src="/images/monImage.png" />

ou

<img src="/monSite/images/monImage.png" />

selon qu'il soit en local ou en ligne...

Si tu as une idée, je suis preneur :)

Merci DevAddict :)

ifabe
Auteur

Je ne dirais rien d'autre que... Merci :)