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