IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Système] Exécuter un bloc PHP dans une chaîne


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 52
    Points : 42
    Points
    42
    Par défaut [Système] Exécuter un bloc PHP dans une chaîne
    bonjour

    Ma question est sans doute simple en fait j'ai un champs codeHtml qui doit contenir des blocs php genre

    blblblblbl <?php echo dsas; ?> blblblblblb


    Le champs codehtml est un text ds la base de donnee. Lorsque je fais echo $codehtml j'aimerais que le php soit interprete, or la il est juste affiche comme du texte.

    Merci a tous.

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    eval

    Attention, l'exécution de code dynamique est une source de failles de sécurités très importante.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 52
    Points : 42
    Points
    42
    Par défaut
    merci je viens de voir l'exemple de la fonction, ca a l'air d'etre ce que je voulqis, mais pourquoi me parles tu de problemes de securites ?

    Merci encore mais la fin m'inquiete

  4. #4
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par ideal
    merci je viens de voir l'exemple de la fonction, ca a l'air d'etre ce que je voulqis, mais pourquoi me parles tu de problemes de securites ?

    Merci encore mais la fin m'inquiete
    Parce que tu exécutes un code qui pourrait potentiellement être n'importe quoi et causer des dommages sur ton serveur, ou ton application.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 52
    Points : 42
    Points
    42
    Par défaut
    ok le code en question ne peut etre rajoute que par moi meme l'administrateur, donc niveau securite c'est ok non ?.

    Le champs codeHtml doit en fait contenir des templates, des mises en forme differentes... et je me suis dit que ce serait simple de mettre tout le bloc html/php dans un champs, ainsi je peux proposer des mises en formes completement differente.


    Edit: j'ai teste la methode mais ca ne fais pas ce que j'ai envie...

    Voici ce que peut contenir le champs codeHtml

    <?php

    $sqlInfoSite = " select * from site where idSite=4";//replace by nomSite=$_GET['nomSite']
    $reqInfoSite = mysql_query($sqlInfoSite) or die ('Erreur SQL:'.$sqlInfoSite.'<br>'.mysql_error());
    $infoSite = mysql_fetch_assoc($reqInfoSite);

    if (isset($_GET["page"])) $sqlInfoPage = " select * from page where idPage=".$_GET["page"];
    else $sqlInfoPage = " select * from page where idPage=".$infoSite['idPageHome'];
    $reqInfoPage = mysql_query($sqlInfoPage) or die ('Erreur SQL:'.$sqlInfoPage.'<br>'.mysql_error());
    $infoPage = mysql_fetch_assoc($reqInfoPage);

    ?>
    <html>
    <head>
    <title><?php echo $infoSite["nomSite"] ?> : <?php echo $infoPage["titrePage"] ?></title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>

    <body bgcolor="#6666FF" text="#000000" style="margin:0;">
    <table width="80%" border="0" cellspacing="0" cellpadding="5" align="center">
    <tr>
    <td bgcolor="#FFFFFF"><b><a href="./index.html"><?php echo $infoSite["nomSite"] ?></a></b></td>
    </tr>
    <tr>
    <td bgcolor="#FFCC66">
    <?php echo $infoSite["menuSite"] ?>
    </td>
    </tr>
    <tr>
    <td bgcolor="#FFFFFF">
    <?php echo $infoPage["contenuPage"] ?>
    </td>
    </tr>
    </table>
    </body>
    </html>
    et lorsque je fais un echo $codeHtml, j'aimerai que les blocs php soient interprete


    Edit 2;

    J'ai allege le champs code html il contient desormais ceci, il n'y a plus de bloc php mais seulement les variables.
    <html>
    <head>
    <title>$infoSite["nomSite"] : $infoPage["titrePage"] </title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>

    <body bgcolor="#6666FF" text="#000000" style="margin:0;">
    <table width="80%" border="0" cellspacing="0" cellpadding="5" align="center">
    <tr>
    <td bgcolor="#FFFFFF"><b><a href="./index.html">$infoSite["nomSite"]</a></b></td>
    </tr>

    <tr>
    <td bgcolor="#FFCC66">
    $infoSite["menuSite"]
    </td>
    </tr>
    <tr>
    <td bgcolor="#FFFFFF">
    $infoPage["contenuPage"]
    </td>
    </tr>
    </table>

    </body>
    </html>

    Et voici ce que contient mon fichier Php:

    <?php

    require_once('../config.php');

    $sqlInfoSite = " select * from site where idSite=4";
    $reqInfoSite = mysql_query($sqlInfoSite) or die ('Erreur SQL:'.$sqlInfoSite.'<br>'.mysql_error());
    $infoSite = mysql_fetch_assoc($reqInfoSite);

    if (isset($_GET["page"])) $sqlInfoPage = " select * from page where idPage=".$_GET["page"];
    else $sqlInfoPage = " select * from page where idPage=".$infoSite['idPageHome'];
    $reqInfoPage = mysql_query($sqlInfoPage) or die ('Erreur SQL:'.$sqlInfoPage.'<br>'.mysql_error());
    $infoPage = mysql_fetch_assoc($reqInfoPage);


    $sqlInfoTheme = " select * from theme where idTheme=".$_GET['num'];//replace by nomSite=$_GET['nomSite']
    $reqInfoTheme = mysql_query($sqlInfoTheme) or die ('Erreur SQL:'.$sqlInfoTheme.'<br>'.mysql_error());
    $infoTheme = mysql_fetch_assoc($reqInfoTheme);

    $code = $infoTheme['codeHtml'];
    //echo $code;

    eval( "\$code = \"$code\";" );

    echo $code;
    ?>
    Mais j'obtiens cette erreur:
    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\program files\easyphp1-8\www\estis\membre\testtheme.php(22) : eval()'d code on line 4
    Merci pour votre aide

  6. #6
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par ideal
    ok le code en question ne peut etre rajoute que par moi meme l'administrateur, donc niveau securite c'est ok non ?
    Non, mais c'est ton appli donc tu fais ce que tu veux.
    La question a déjà été débattue plusieurs fois sur le forum, et j'ai pas le temps de développer, navré.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 145
    Points : 99
    Points
    99
    Par défaut
    Citation Envoyé par ideal
    ok le code en question ne peut etre rajoute que par moi meme l'administrateur, donc niveau securite c'est ok non ?.

    Le champs codeHtml doit en fait contenir des templates, des mises en forme differentes... et je me suis dit que ce serait simple de mettre tout le bloc html/php dans un champs, ainsi je peux proposer des mises en formes completement differente.


    Edit: j'ai teste la methode mais ca ne fais pas ce que j'ai envie...

    Voici ce que peut contenir le champs codeHtml



    et lorsque je fais un echo $codeHtml, j'aimerai que les blocs php soient interprete


    Edit 2;

    J'ai allege le champs code html il contient desormais ceci, il n'y a plus de bloc php mais seulement les variables.



    Et voici ce que contient mon fichier Php:



    Mais j'obtiens cette erreur:


    Merci pour votre aide
    Bonjour,

    Peux tu nous dire à quel ligne correspond la "ligne 4" stp ?

    Cordialement,
    FluidBlow.

  8. #8
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    - le fait que le $codeHtml contienne du HTML mélangé au PHP ne peut-il pas poser des problèmes au compilateur qui attend du code PHP ?

    - sinon, as-tu essayé une solution plus simple du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    $code = $infoTheme['codeHtml'];
    eval( $code );
    ...
    sinon, je crains que les appels de fonctions ne soient jamais effectués.

    Par contre, je rejoins Eusebius sur le DANGER REEL d'une telle solution.
    Il serait beaucoup plus sain d'utiliser des patterns XML qui pourraient être mappés sur des fonctions PHP faisant la même chose, mais de manière moins dangereuse.

Discussions similaires

  1. [PHP 5.3] [PHP-CLI] Interprêter code PHP dans une chaîne
    Par houpli dans le forum Langage
    Réponses: 3
    Dernier message: 17/10/2012, 00h41
  2. exécuter un script php dans une nouvelle window
    Par lucaazori1988 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 10/03/2011, 21h37
  3. Réponses: 10
    Dernier message: 15/07/2008, 11h52
  4. Réponses: 5
    Dernier message: 23/12/2007, 15h12
  5. [Système] Exécution Formule de calcul dans une chaîne
    Par san--antonio dans le forum Langage
    Réponses: 2
    Dernier message: 16/06/2006, 08h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo