X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fecrire%2Fpublic%2Fsandbox.php;fp=www%2Fecrire%2Fpublic%2Fsandbox.php;h=79169297b5d689c8e80c6593855d1126fec9f951;hb=2e90803a52939dfb20987e3c0fdcdb9676c47aa9;hp=8f3cb75aa6b4dacab14efa69a24fd94790e430ba;hpb=94bf708c1d33740fb69957c922eb2bccacc2fa63;p=lhc%2Fweb%2Fwww.git diff --git a/www/ecrire/public/sandbox.php b/www/ecrire/public/sandbox.php index 8f3cb75a..79169297 100644 --- a/www/ecrire/public/sandbox.php +++ b/www/ecrire/public/sandbox.php @@ -59,9 +59,13 @@ function sandbox_composer_filtre($fonc, $code, $arglist, &$p){ // Calculer un // La constante ci-dessous donne le code general quand il s'agit d'un script. -define('CODE_INCLURE_SCRIPT', 'if (($path = %s) AND is_readable($path)) { -include $path; -} else erreur_squelette(array("fichier_introuvable", array("fichier" => "%s")), array(%s));' +define('CODE_INCLURE_SCRIPT', 'if (!($path = %s) OR !is_readable($path)) + erreur_squelette(array("fichier_introuvable", array("fichier" => "%s")), array(%s)); +else { + $contexte_inclus = %s; + include $path; +} +' ); /** @@ -69,16 +73,17 @@ include $path; * * @param string $fichier * @param Object $p + * @param array $_contexte * @return string */ -function sandbox_composer_inclure_php($fichier, &$p){ +function sandbox_composer_inclure_php($fichier, &$p, $_contexte){ $compil = texte_script(memoriser_contexte_compil($p)); // si inexistant, on essaiera a l'execution if ($path = find_in_path($fichier)) $path = "\"$path\""; else $path = "find_in_path(\"$fichier\")"; - return sprintf(CODE_INCLURE_SCRIPT, $path, $fichier, $compil); + return sprintf(CODE_INCLURE_SCRIPT, $path, $fichier, $compil, $_contexte); } /**