Gestion des buffers (ob_start)
Bonjour,
J'ai implémentée une fonction "include sécurisée" en utilisant les buffers (ob_start). Cela fonctionne mais je perds les variables précédemment définies dans la page "appelante".
La solution des variables de session fonctionne mais c'est une parade peu élégante, et qui m'obligerait à recoder pas mal de pages, sans compter les risques d'erreur ou d'oublis.
J'ai probablement loupé quelque chose dans la compréhension de l'utilisation des buffers.
La question:
Comment conserver dans ma page incluse "page.php" les variables précédemment définies dans la page "index.php" ?
Merci d'avance
------------------------------------------
Voilà le principe du code :
index.php
Code:
1 2 3
| $variable_truc="22";
secured_include("page.php", "once", DEBUG);
... |
page.php
Code:
1 2 3 4 5 6
| if ($variable_truc === "22") {
echo "tout va bien, j ai récupéré ma variable comme je le souhaitais";
}
else {
echo "zut j ai un probleme, et je suis donc dans ce cas là";
} |
secured_include (extrait)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
function secured_include($file, $option="once", $debug=FALSE) {
....
if (!in_array($path, get_included_files())) {
ini_set('implicit_flush', 'false'); // redondance avec le php.ini de prod
ini_set('output_buffering', 'Off');
ob_start();
if (strtolower($option) == "once") {
include_once $path;
}
else {
include $path;
}
$content = ob_get_contents();
ob_end_flush();
return $content;
}
else {
return TRUE;
}
..
} |