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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
$variable_truc="22";
secured_include("page.php", "once", DEBUG);
...
page.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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;
	}
..
}