Savoir si on est dans un include... - PHP - Programmation
Marsh Posté le 11-02-2005 à 17:05:33
comme l'include est un bête copy-paste il me semble que non. mais je peux me tromper
Marsh Posté le 11-02-2005 à 17:24:53
je ne pense pas non plus,
et c'est pas très propre comme programmation
Marsh Posté le 11-02-2005 à 17:29:21
Ben avec apache (les autres serveurs web j'en sais rien) il existe plusieurs variables donnant le nom du script, les paramêtres, le chemin d'accés au script et même le nom de domaine.
D'ailleur, il y a même une variable qui donne l'intégralité de ces données en contenant carément l'adresse que tu vois dans ton navigateur.
Donc oui, à partir de tout ça, tu peux savoir si ton fichier est demandé en include ou par une demande http.
Par contre, je me souviens pas exactement du noms de toutes ces variables. C'est dans $_SERVER si je me souviens bien.
Personellement, pour mon site web, en dehors de la page d'accés au site, je n'ai pas la moindre ligne de code qui traine en dehors des fonctions et des objects. Comme ça, même si quelqu'un demande un de ces fichiers , il n'aura rien d'autre qu'une page blanche dans son navigateur et aucune action n'aura été réalisé en php sur le serveur.
Marsh Posté le 11-02-2005 à 17:30:10
donc a part verifier en dur avec l'url entrée...
Marsh Posté le 11-02-2005 à 17:35:11
page1.php
Code :
|
page2.php
Code :
|
si j'execute page1.php, il n'est jamais question de page2.php dans la variable $_SERVER
Marsh Posté le 11-02-2005 à 17:40:55
Ben oui, logique vu que c'est pas la page demandé depuis l'extérieur du site web. Comme dit JagStang, un include, c'est un copier coller du code de page2.php à la palce du include(page2.php); dans la copie de page1.php exécuté par le serveur.
Au niveau du fichier rien n'est changé (heureusement). C'est dans la mémoire du serveur que c'est fait.
Marsh Posté le 11-02-2005 à 17:44:43
Tu pourrais utiliser $PHP_SELF.
Avec par exemple ce type de code :
Code :
|
Donc la on verifie si "fichier.php" se trouve dans la chaine $PHP_SELF, si c'est le cas, alors on fait une redirection vers index.php.
Cet exemple traite d'un site avec "une seule porte d'entree". En gros, on passe forcement par index.php. Donc ca permet de voir si quelqu'un essaye de rentrer par ailleurs.
[edit]
Voila, j'ai retrouve la doc php.
http://ch2.php.net/manual/en/langu [...] efined.php
Le manuel à ecrit a écrit : __FILE__ The full path and filename of the file. If used inside an include, the name of the included file is returned. |
Il me semble qu'il existe aussi __FILE__ et __LINE__ en php, mais je sais pas s'ils sont utiles dans ce cadre la. utiliser.
Marsh Posté le 11-02-2005 à 18:13:41
__FILE__ est la solution
Code :
|
voila
Marsh Posté le 11-02-2005 à 18:35:53
Salut,
le meilleur plan, c'est de vérifier si ton fichier appartient au tableau retourné par "get_included_files"
http://fr.php.net/manual/en/functi [...] -files.php
voila.
Marsh Posté le 11-02-2005 à 19:10:43
bof, ma simple comparaison suffit et est moins lourde...
Marsh Posté le 11-02-2005 à 19:18:50
Décidément, un probléme = plusieurs solutions.
Au fait, parmis toutes ces solutions, certaines ne vont pas poser probléme avec des register_globals à off? Je penses surtout au $PHP_SELF.
Marsh Posté le 11-02-2005 à 19:33:32
omega2 a écrit : Décidément, un probléme = plusieurs solutions. |
En effet tu as raison.
il faut plutot utilise $_SERVER['PHP_SELF']
http://ch2.php.net/manual/en/reser [...] les.server
Marsh Posté le 12-02-2005 à 10:47:23
En ce qui me concerne, j'utilise toujours une session sur ma page index et je vérifie dans chacune de mes pages que je suis bien dans ma session, sinon, c'est affichage direct de : "Bien essayé, try again..."
Marsh Posté le 11-02-2005 à 16:59:59
y a t il moyen de savoir si ont est dans un include ou si on a appeler le fichier directement ??
un peu comme le
en python...
edit : faute dans le titre
Message édité par KangOl le 11-02-2005 à 17:09:02
---------------
Nos estans firs di nosse pitite patreye...