Encapsulation de cripts

pitxu Messages postés 708 Statut Membre -  
pitxu Messages postés 708 Statut Membre -
Bonjour,

je souhaite affecter du code html/php à une variable :
$content=file_get_contents("content.php");
pour lancer un script ensuite :
include test.php

Mais dans le fichier content.php, j'ai du php et du html mélangé, par exemple :
<? echo "<input type=hidden name\"exemple\" value=\"test\">"; ?>

Du coup, le code génère des erreurs à cause des \

Existe-t-il une méthode pour permettre une bonne interprétation ?
Configuration: Windows XP
Internet Explorer 7.0

3 réponses

  1. Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   63 308
     
    Le plus simple serait de changer le contenu de content.php pour :

    <input type=hidden name="exemple" value="test">


    Par ailleurs, je ne sais pas si c'est volontaire mais tu avais oublié le = derrière name.
    Si tu ne peux passer changer le contenu de content.php, alors il faut que tu interpréte le contenu de content.php, soit en faisant eval($content) soit plus simplement en faisant un include au lieu de file_get_contents().

    Pour récupérer cette valeur, tu peux utiliser les fonctions ob_start(); mais c'est un peu overkill !
    0
  2. pitxu Messages postés 708 Statut Membre 95
     
    Merci pour ta réponse.

    Je ne peux pas simplifier le code de content.php, car il y a des variables php.

    Je vais essayer avec eval.
    0
  3. pitxu Messages postés 708 Statut Membre 95
     
    ça ne fonctionne pas avec eval.

    Pour être plus précis, voici le code :

    index.php

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Famille Elias-Jean</title>
    <link href="style.css" rel="stylesheet" type="text/css">
    </head>

    <?
    function get_tab($content) {
    echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
    <tr>
    <td id=\"tabhg\" width=\"24\" height=\"24\"> </td>
    <td id=\"tabh\" height=\"24\"> </td>
    <td id=\"tabhd\" width=\"24\" height=\"24\"> </td>
    </tr>
    <tr>
    <td id=\"tabg\" width=\"24\"> </td>
    <td id=\"tab\">"; if (isset($content) && !empty($content)) { echo ($content); } else { echo " "; } echo "</td>
    <td id=\"tabd\" width=\"24\"> </td>
    </tr>
    <tr>
    <td id=\"tabbg\" width=\"24\" height=\"24\"> </td>
    <td id=\"tabb\" height=\"24\"> </td>
    <td id=\"tabbd\" width=\"24\" height=\"24\"> </td>
    </tr>
    </table>"; }

    get_tab(file_get_contents("shoutbox.php"));
    ?>

    shoutbox.php

    <?php
    $msg = array();
    function file_save($filename, $content, $flags = 0)
    {if (!($file = fopen($filename, 'w')))
    return false;
    $n = fwrite($file, $content);
    fclose($file);
    return $n ? $n : false;
    }

    if (!file_exists("./chat.php")) file_save("./chat.php","<?php\n\$msg = ".var_export($msg,TRUE)."\n?>");

    include "chat.php";

    while (count($msg) >= 5) array_shift($msg);

    $canpost = empty($_POST['submit']) ? 'refresh' : $_POST['submit'];
    $canpost = ($canpost == 'refresh') ? 0 : 1;
    if (!empty($_POST['mess']) && !empty($_POST['pseudo']) && $canpost)
    {$i = count($msg);
    $msg[$i]['pseudo'] = htmlentities($_POST['pseudo']);
    $msg[$i]['texte'] = htmlentities($_POST['mess']);
    $msg[$i]['date'] = time();
    }

    $msg2 = array_reverse($msg);
    echo '<div class="chat">';
    foreach ($msg2 as $message)
    {echo '<span class="pseudo">'.$message['pseudo'].'</span> <span class="date">['.date("d/m/y à H:i:s",$message['date']).']</span><br /><span class="msg">'.nl2br($message['texte']).'<br /><hr class="chat">';
    }
    echo "</div>";

    file_save("./chat.php", "<?php\n\$msg = ".var_export($msg,TRUE)."\n?>");
    ?>
    <div class="miniform">
    <form method="post">
    <input type="hidden" name="pseudo" value="<? echo $user; ?>"><br />
    <textarea name="mess" cols="20" rows="3"></textarea><br />
    <input name="submit" type="submit" value="POSTER"> <input name="submit" type="submit" value="REFRESH">
    </form>
    </div>

    Voilà, comment faire en sorte que shoutbox.php soit correctement interprété ?
    0