Encapsulation de cripts

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

  • Votes
  • Date
  • Date décroissante
  1. Webmaster
    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 !
    1. 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.
      1. ç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é ?