Discussion:
transmission de variables a travers include s
(trop ancien pour répondre)
F.G.
2007-02-09 22:43:28 UTC
Permalink
Bonsoir!
mon modele de page =
include ("/home/xxx/www/includes/paths.php");
include ("/home/xxx/www/includes/head.php");
include ("/home/xxx/www/includes/corps.php");
include ("/home/xxx/www/includes/pied.php");

les cvariables recuperees dans le premier include
ne sont pas vues par les
autres fichiers includes

quelle est l'explication
et surtout quelle est la solution ?

Merci !
Olivier Miakinen
2007-02-10 09:38:11 UTC
Permalink
Post by F.G.
include ("/home/xxx/www/includes/paths.php");
include ("/home/xxx/www/includes/head.php");
include ("/home/xxx/www/includes/corps.php");
include ("/home/xxx/www/includes/pied.php");
les variables recuperees dans le premier include
ne sont pas vues par les autres fichiers includes
J'ai du mal à le croire. Ce ne serait pas plutôt qu'elles ne sont pas
vues par les *fonctions* définies dans les autres fichiers inclus, faute
de les avoir rendues visibles par « global » ?
Post by F.G.
quelle est l'explication
et surtout quelle est la solution ?
Si mon idée n'était pas la bonne, tu vas devoir nous montrer un exemple
de code qui ne marche pas.
Thief13
2007-02-10 17:01:33 UTC
Permalink
Post by Olivier Miakinen
Post by F.G.
include ("/home/xxx/www/includes/paths.php");
include ("/home/xxx/www/includes/head.php");
include ("/home/xxx/www/includes/corps.php");
include ("/home/xxx/www/includes/pied.php");
les variables recuperees dans le premier include
ne sont pas vues par les autres fichiers includes
J'ai du mal à le croire. Ce ne serait pas plutôt qu'elles ne sont pas
vues par les *fonctions* définies dans les autres fichiers inclus, faute
de les avoir rendues visibles par « global » ?
Post by F.G.
quelle est l'explication
et surtout quelle est la solution ?
Si mon idée n'était pas la bonne, tu vas devoir nous montrer un exemple
de code qui ne marche pas.
Vérifie que tu ne les réassigne pas dans un autres fichier que tu inclu,
ou dans un teste d'égalité (= au lieu de ==) ça m'est déjà arrivé...

En plus, si ce sont des variable qui sont sensé contenir des chemis vers
des fichiers, il vaux plutot mieux que tu utilise de constante pour etre
sur de ne pas te les faire modifier d'une manière au d'une autre par
l'utilisateur.
Olivier Miakinen
2007-02-10 23:32:03 UTC
Permalink
[...] il vaux plutot mieux que tu utilise de constante pour etre
sur de ne pas te les faire modifier d'une manière au d'une autre par
l'utilisateur.
Très juste. D'une manière générale, et surtout entre d'un include() à un
autre, utiliser des constantes pour ce que ne changera effectivement pas
est une excellente idée. De plus, elles seront automatiquement visibles,
même dans les fonctions.
F.G.
2007-02-13 20:45:18 UTC
Permalink
Post by Olivier Miakinen
[...] il vaux plutot mieux que tu utilise de constante pour etre
sur de ne pas te les faire modifier d'une manière au d'une autre par
l'utilisateur.
Très juste. D'une manière générale, et surtout entre d'un include() à un
autre, utiliser des constantes pour ce que ne changera effectivement pas
est une excellente idée. De plus, elles seront automatiquement visibles,
même dans les fonctions.
Merci pour ces réponses avisées
Mon problème vient du fait que je fait un include absolu avec :
include ("http://www.xxx.com/includes/chemins.php
meme si xxx.com est mon site, ça eh bien l'inclusion n'est pas
satisfaisante ...
Olivier Miakinen
2007-02-13 22:10:36 UTC
Permalink
Post by F.G.
include ("http://www.xxx.com/includes/chemins.php
meme si xxx.com est mon site, ça eh bien l'inclusion n'est pas
satisfaisante ...
Ben oui, c'est logique. Lorsque tu passes par une requête HTTP pour
inclure ton fichier, ça lance une deuxième instance de l'interpréteur
PHP appelé par Apache (ou tout autre serveur httpd), et tu inclus le
résultat de l'exécution, non pas le code source. Si tu voulais que ça
marche comme ça, il faudrait que chemins.php donne en sortie non pas du
HTML, mais un deuxième niveau de PHP !

Par exemple, ce serait un truc comme ça :

<?php
echo "<?php\n";
echo ...
...
echo "?>\n";
?>

Pas très facile à maintenir, et qui plus est pas très malin si tes
variables contiennent des mots de passe ou autres données sensibles.
Thief13
2007-02-14 17:41:03 UTC
Permalink
Post by F.G.
Merci pour ces réponses avisées
include ("http://www.xxx.com/includes/chemins.php
meme si xxx.com est mon site, ça eh bien l'inclusion n'est pas
satisfaisante ...
C'est sur que include ("/home/xxx/www/includes/paths.php"); de ton
premier post et include ("http://www.xxx.com/includes/chemins.php");
n'ont strictement rien à voir, le premier ouvre le fichier directement
sur le serveur et le deuxieme l'execute et révupère la sortie...
Continuer la lecture sur narkive:
Loading...