Page 1 sur 1

Savoir si un fichier est utilisé dans un include ou pas

Posté : 02 févr. 2012, 17:44
par pol2095
Bonjour,

est-il possible de savoir si un fichier php est utilisé dans un include ou pas ?

merci

Re: Savoir si un fichier est utilisé dans un include ou pas

Posté : 02 févr. 2012, 17:56
par xTG
Savoir si un fichier a été inclu auparavant ou non ?
Ou bien savoir si un fichier est ouvert en lecture ou écriture ?

Pour le premier il n'existe pas de fonction. Mais pour éviter les erreurs il faut utiliser include_once() ou require_once().
Ainsi si le fichier a déjà été inclu il ne le sera pas la seconde fois et cela ne déclenchera pas de warning.

Re: Savoir si un fichier est utilisé dans un include ou pas

Posté : 02 févr. 2012, 18:02
par Shenryu
Salut,
Pour le premier il n'existe pas de fonction.
En fait si, il existe la fonction get_included_files() : http://php.net/manual/fr/function.get-i ... -files.php

Cela ne reste à utiliser qu'en cas de besoin spécifique. Si c'est juste pour éviter les erreurs d'inclusion, les fonctions include_once et require_once sont faites pour ça comme l'a dit xTG.
Elles sont néanmoins très lentes (de l'ordre de 30% plus qu'un include ou require il me semble) donc à n'utiliser que pour les fichiers pouvant être inclus plusieurs fois.

Si c'est une question de chargement de fichiers, tu peux aussi regarder du côté de l'auto-loading ;)

++

Re: Savoir si un fichier est utilisé dans un include ou pas

Posté : 02 févr. 2012, 18:13
par pol2095
avec get_included_files, le premier fichier retourné est-il toujours le nom du fichier affiché dans la barre d'adresse du navigateur ?

Re: Savoir si un fichier est utilisé dans un include ou pas

Posté : 02 févr. 2012, 18:16
par Shenryu
Oui, ça me semblerait logique puisqu'il s'agit du premier fichier appelé.

Mais quel est ton besoin ? C'est juste de récupérer le nom de ton fichier appelé dans l'URL ?

Re: Savoir si un fichier est utilisé dans un include ou pas

Posté : 02 févr. 2012, 18:18
par xTG
Ah je connaissais pas cette fonction, intéressante. :P

Re: Savoir si un fichier est utilisé dans un include ou pas

Posté : 02 févr. 2012, 18:27
par pol2095
c'est pour des raisons de sécurité, je ne veux pas qu'on se connecte au fichier qui est inclus directement.

Re: Savoir si un fichier est utilisé dans un include ou pas

Posté : 02 févr. 2012, 18:28
par moogli
d'après la doc oui
Exemple #1 Exemple avec get_included_files()
<?php
// Ce fichier est abc.php

include 'test1.php';
include_once 'test2.php';
require 'test3.php';
require_once 'test4.php';

$included_files = get_included_files();

foreach ($included_files as $filename) {
    echo "$filename\n";
}

?>
L'exemple ci-dessus va afficher :

abc.php
test1.php
test2.php
test3.php
test4.php
regarde plutôt le request uri dans $_SERVER

@+

Re: Savoir si un fichier est utilisé dans un include ou pas

Posté : 02 févr. 2012, 19:03
par xTG
c'est pour des raisons de sécurité, je ne veux pas qu'on se connecte au fichier qui est inclus directement.
Dans ce cas définir une constante serait mieux...
<?php
if( !defined('MA_CONSTANTE') )
  exit();
Et bien sûr la définition de la constante dans la page qui inclue toutes les autres.

Re: Savoir si un fichier est utilisé dans un include ou pas

Posté : 02 févr. 2012, 20:01
par pol2095
est-il possible de récupérer le nom du fichier inclus, avec $_SERVER["PHP_SELF"], on récupère le nom du fichier qui inclut même si on le met dans la page incluse.
Comment récupérer le nom du fichier inclus ?

Re: Savoir si un fichier est utilisé dans un include ou pas

Posté : 02 févr. 2012, 20:19
par xTG
L'index PHP_SELF c'est le nom de la page appelée, pas d'un script inclus. C'est en quelque sorte le script parent de tous les autres.
Pour les scripts inclus c'est la fonction précédemment donnée.

Re: Savoir si un fichier est utilisé dans un include ou pas

Posté : 03 févr. 2012, 19:03
par Calimero
D'après le manuel, debug_backtrace() permet aussi de savoir si on se trouve dans un fichier inclus ou un fichier maître.

http://fr2.php.net/manual/en/function.d ... .php#97508