jerkoo Posté 25 Juillet 2008 Posté 25 Juillet 2008 (modifié) Bonjour, je n'arrive pas a trouver s'il est possible de tester la présence d'une fonction (en l'occurence "include()") dans une page PHP ... Je voudrait faire un test du type : if (la fonction include() est présente sur la page en cours) { je la remplace par une autre qui fait autre chose;} Quelqu'un a une idée ??? Merci ! Modifié 25 Juillet 2008 par jerkoo
captain_torche Posté 25 Juillet 2008 Posté 25 Juillet 2008 Tu peux essayer avec function_exists(), ça devrait faire l'affaire.
Kioob Posté 25 Juillet 2008 Posté 25 Juillet 2008 (modifié) Hello, Pour tester le fait qu'une fonction soit déclarée il y a function_exists() ; mais tu cherches à faire quoi au juste ? :S EDIT : grillé en beauté Modifié 25 Juillet 2008 par Kioob
jerkoo Posté 26 Juillet 2008 Auteur Posté 26 Juillet 2008 Hello, Pour tester le fait qu'une fonction soit déclarée il y a function_exists() ; mais tu cherches à faire quoi au juste ? :S thx je vais tester mais je ne suis pas sur que ça marche avec le fonction include()... je cherche a sécuriser un minimum ce code en forçant les fichiers appelés par include() à tester leurs existences sur le serveur pour éviter les injections. A vrai dire je ne sais pas trop comment m'y prendre, je tâtonne ... Si vous avez des idées... Comme c'est pas moi qui ai créé ce code, il y en a partout, des include(), donc si je pouvais lancer une fonction "patch" en haut de chaque page ça m'éviterais des heures de spéléo dans les pages. Je précise que le site est une passoire question sécurité ...
Kioob Posté 26 Juillet 2008 Posté 26 Juillet 2008 Les gens cherchant à faire ça utilisent généralement une constante (define() / is_defined()).
jerkoo Posté 26 Juillet 2008 Auteur Posté 26 Juillet 2008 (modifié) Les gens cherchant à faire ça utilisent généralement une constante (define() / is_defined()). euh... tu pourrais développer un chouïa STP ? J'ai dû sauter une marche parce que là je ne pige pas trop ce que tu fais avec ta contante ??? Merci Modifié 26 Juillet 2008 par jerkoo
captain_torche Posté 26 Juillet 2008 Posté 26 Juillet 2008 Pour faire ce que tu souhaites (tester la présence physique d'un fichier avant de l'inclure), il faudra forcément que tu crées une nouvelle fonction (tu ne peux pas redéfinir une fonction existante en PHP). Il faut donc que tu appelles cette nouvelle fonction, qui testera l'existence du fichier, puis l'incluera avec include().
jerkoo Posté 26 Juillet 2008 Auteur Posté 26 Juillet 2008 Pour faire ce que tu souhaites (tester la présence physique d'un fichier avant de l'inclure), il faudra forcément que tu crées une nouvelle fonction (tu ne peux pas redéfinir une fonction existante en PHP).Il faut donc que tu appelles cette nouvelle fonction, qui testera l'existence du fichier, puis l'incluera avec include(). c'est évident, voilà ad minima ce que je veux faire pour remplacer tous les include("inc/".$page.".php") : function includePage($page) { $filename = "inc/".$page.".php"; if (file_exists($filename)) include($filename);} simplement je voudrais declancher cette fonction uniquement lorsqu'il y a un include() dans la page... C'est pourtant simpl, mais je ne sais pas comment localiser ces fichus includes En code abscon ça devrait donner ça : if(function_exist(include($filename)) { on remplace (include($filename) par includePage($page);} bala... ché pas comment faire
captain_torche Posté 26 Juillet 2008 Posté 26 Juillet 2008 Je ne vois pas trop ce que tu comptes faire. Si tu as la main sur le site, il suffit de remplacer toutes les occurences d'include() par includePage().
Kioob Posté 26 Juillet 2008 Posté 26 Juillet 2008 (modifié) Effectivement j'étais à coté de la plaque : je pensais que tu voulais vérifier en début de script qu'il s'agissait bien d'un appel via include() et non d'une exécution directe. Mais ce que tu cherches à faire semble totalement différent, et je n'en comprends pas le but... dsl, et bon courage Modifié 26 Juillet 2008 par Kioob
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant