Encapsulation de cripts

Fermé
pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 - 14 sept. 2007 à 11:02
pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 - 15 sept. 2007 à 07:13
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 ?

3 réponses

Jean-François Pillou Messages postés 18707 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 267
14 sept. 2007 à 12:42
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
pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 94
14 sept. 2007 à 13:02
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
pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 94
15 sept. 2007 à 07:13
ç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