portée des variables

portée des variables - PHP - Programmation

Marsh Posté le 20-07-2004 à 10:19:51    

Salut !
 
Dans mon prog en php 4.3.6, j'ai utilisé un include fichier.php.
 
dans le prog de cet include, j'ai fait des trucs (connection à SQL SERVER) et initilisé des variables.
 
Il me semble qu'on ne peut pas recupérer les valeurs de ces variables depuis le prog principal... :pfff:  
 
comment faire pour les recuperer ?
 
 

Reply

Marsh Posté le 20-07-2004 à 10:19:51   

Reply

Marsh Posté le 20-07-2004 à 10:20:54    

si on peu

Reply

Marsh Posté le 20-07-2004 à 10:21:13    

Il me semble au contraire que c'est tout à fait possible, je verrai mal l'utilité d'un include sinon :jap:


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 20-07-2004 à 10:26:45    

Alors, j'ai du faire une erreur quelque part...
 
Je vous fournis le code :  
 
VOici le main :  
 
<?php
include "http://localhost/main.php?id=toto";
echo $host; ----------> variable vide !!
?>
 
prog de include :  
 
<?php
$host = "ST-001";
?>
 
Bizarre hein ?il me met indefined variable host etc...

Reply

Marsh Posté le 20-07-2004 à 10:29:16    

Tu es sur que c'est le bon fichier que tu inclus?
Mes un echo "Taiste" dans ton fichier inclu pour vérifier

Reply

Marsh Posté le 20-07-2004 à 10:31:32    

Ouaip c'est bien celui la...
 

Reply

Marsh Posté le 20-07-2004 à 10:35:47    

T'as peut-etre un pb d'include, essaie de passer le nom "systeme" du fichier (cad pas une url)


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 20-07-2004 à 10:40:17    

Nan, marche pas non plus, le register global n'y es pas pour quelque chose ? Attention, je ne sais même pas de quoi je parle là  ;)  
 

Reply

Marsh Posté le 20-07-2004 à 10:43:36    

lol
 
rien a voir :)
 
host serait pas un nom reservé? :o

Reply

Marsh Posté le 20-07-2004 à 10:46:43    

T'es sûr que tu fais pas l'affectation de $host dans une fonction ? :o


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 20-07-2004 à 10:46:43   

Reply

Marsh Posté le 20-07-2004 à 10:52:00    

Non, et host n'est pas un mot clé...
 

Reply

Marsh Posté le 20-07-2004 à 10:52:38    

mais fait juste un path relatif :o

Reply

Marsh Posté le 20-07-2004 à 10:53:31    

Code :
  1. fichier => page_include.php
  2. <?php
  3. $marche = "ça marche ? ";
  4. ?>


 

Code :
  1. fichier => page.php
  2. <?php
  3. include('page_include.php');
  4. if (isset($marche)) {
  5.      $ok = $marche." oui ça marche !";
  6. } else {
  7.      $ok = "c'est KO";
  8. }
  9. echo $ok;
  10. exit;
  11. ?>


 
essaie ceci, et tu nous diras si cela fonctionne (je suis sûr que oui)


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 20-07-2004 à 10:55:45    

je teste et je reviens

Reply

Marsh Posté le 20-07-2004 à 11:05:35    

Ben ton code marche parfaitement.
 
Mais quand j'ai modifé le chemin de include en "http://www.localhost/page_include.php?param=1"
 
ca marche plus ?? affiche KO  :??:

Reply

Marsh Posté le 20-07-2004 à 11:07:14    

galldup a écrit :

Ben ton code marche parfaitement.
 
Mais quand j'ai modifé le chemin de include en "http://www.localhost/page_include.php?param=1"
 
ca marche plus ?? affiche KO  :??:


 
vérifie http://fr2.php.net/manual/en/ref.f [...] -url-fopen
 


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 20-07-2004 à 11:07:58    

-> chacal, si je met un path relatif, cela ne marche pas car je veux passer des parametres pour l'include...

Reply

Marsh Posté le 20-07-2004 à 11:09:02    

tu peu pas en relatif? :??:
 
moi ca marche hein

Reply

Marsh Posté le 20-07-2004 à 11:10:15    

chacal_one333 a écrit :

tu peu pas en relatif? :??:
 
moi ca marche hein


 
edit : http://www.chezmoicamarche.org/
 
s'il veut faire un include avec des parametre, il faut qu'il passe par un chemin de type url, sinon php cherche un fichier nommé exactement "file.php?param=1" qui n'existe donc pas en tant que tel.


Message édité par boulax le 20-07-2004 à 11:11:08

---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 20-07-2004 à 11:11:06    

du tout :heink:

Reply

Marsh Posté le 20-07-2004 à 11:16:38    

-> Boulax
Ok, j'ai lu ce que tu m'as mis concernant le "allow url open"
Dans php.ini, c'est a "on" et j'ai toujours le même probleme.

Reply

Marsh Posté le 20-07-2004 à 11:17:10    

php.net a écrit : :

Sous Windows, dans les versions antérieures à la version 4.3, les fonctions suivantes ne supportent pas l'accès aux fichiers distants : include(), include_once(), require(), require_once() et les fonctions imagecreatefromXXX de l'extension Référence XLII, Images.


 
Met plutôt des fonctions dans tes fichiers include. Cela te permettra de les appeler en leur donnant le paramètre que tu veux. Un include sur une URL avec paramètres ne me semble pas la meilleure façon de procéder.


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 20-07-2004 à 11:18:53    

T509 a écrit :

Met plutôt des fonctions dans tes fichiers include. Cela te permettra de les appeler en leur donnant le paramètre que tu veux. Un include sur une URL avec paramètres ne me semble pas la meilleure façon de procéder.


 
Il a php 4.3.6 selon lui. Mais c'est clair que des includes avec des paramètres je n'ai jamais utilisé...


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 20-07-2004 à 11:22:47    

bon, je vais voir comment ca marche les fonctions et essayer de trouver une solution intermédiaire, et tant pis si c'est pas élégant !
 
En tous cas, merci les gars ! :)

Reply

Marsh Posté le 20-07-2004 à 11:24:22    

boulax a écrit :

Il a php 4.3.6 selon lui. Mais c'est clair que des includes avec des paramètres je n'ai jamais utilisé...


la question est: peut-on? perso je ne pense pas: l'include est à considérer comme une portion de code qu'on insère dans la page principale, les paramètres lus dans $_GET sont donc ceux passés à la page principale. Ca me semble logique.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 20-07-2004 à 11:25:58    

hum... :o  
 
If "URL fopen wrappers" are enabled in PHP (which they are in the default configuration), you can specify the file to be included using a URL (via HTTP or other supported wrapper - see Appendix L for a list of protocols) instead of a local pathname. If the target server interprets the target file as PHP code, variables may be passed to the included file using a URL request string as used with HTTP GET. This is not strictly speaking the same thing as including the file and having it inherit the parent file's variable scope; the script is actually being run on the remote server and the result is then being included into the local script.

Reply

Marsh Posté le 20-07-2004 à 11:26:55    

drasche a écrit :

la question est: peut-on? perso je ne pense pas: l'include est à considérer comme une portion de code qu'on insère dans la page principale, les paramètres lus dans $_GET sont donc ceux passés à la page principale. Ca me semble logique.


 

Code :
  1. <?php
  2. /* This example assumes that www.example.com is configured to parse .php
  3. * files and not .txt files. Also, 'Works' here means that the variables
  4. * $foo and $bar are available within the included file. */
  5. // Won't work; file.txt wasn't handled by www.example.com as PHP
  6. include 'http://www.example.com/file.txt?foo=1&bar=2';
  7. // Won't work; looks for a file named 'file.php?foo=1&bar=2' on the
  8. // local filesystem.
  9. include 'file.php?foo=1&bar=2';
  10. // Works.
  11. include 'http://www.example.com/file.php?foo=1&bar=2';
  12. $foo = 1;
  13. $bar = 2;
  14. include 'file.txt';  // Works.
  15. include 'file.php';  // Works.
  16. ?>


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 20-07-2004 à 11:29:42    

galldup a écrit :

hum... :o  
 
If "URL fopen wrappers" are enabled in PHP (which they are in the default configuration), you can specify the file to be included using a URL (via HTTP or other supported wrapper - see Appendix L for a list of protocols) instead of a local pathname. If the target server interprets the target file as PHP code, variables may be passed to the included file using a URL request string as used with HTTP GET. This is not strictly speaking the same thing as including the file and having it inherit the parent file's variable scope; the script is actually being run on the remote server and the result is then being included into the local script.


il est écrit que ce que tu obtient est le résultat de ton script inclue. S'il n'y a acun résultat (echo...), il n'y a rien qui sera retourné. Dnac dans ce cas là, seul du code html peut être retourné.


Message édité par T509 le 20-07-2004 à 11:30:21

---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 20-07-2004 à 11:35:31    

galldup a écrit :

hum... :o  
 
If "URL fopen wrappers" are enabled in PHP (which they are in the default configuration), you can specify the file to be included using a URL (via HTTP or other supported wrapper - see Appendix L for a list of protocols) instead of a local pathname. If the target server interprets the target file as PHP code, variables may be passed to the included file using a URL request string as used with HTTP GET. This is not strictly speaking the same thing as including the file and having it inherit the parent file's variable scope; the script is actually being run on the remote server and the result is then being included into the local script.


 
bah oui, mais si tu fais un include sur une url (http://...), le serveur web qui héberge la page inclue va évaluer le php puis envoyer le résultat de cette évaluation... dans ton cas un fichier vide ;)
 
donc, tu commence par déclarer ta variable:
$id = 'toto';
puis tu fais  
include('main.php');
 
$id est une variable globale, elle sera accessible dans le code contenu dans main.php
 
l'include est juste une copie du contenu de main.php à la place de la ligne de l'include (grosso modo ;) )


Message édité par dropsy le 20-07-2004 à 11:38:25
Reply

Marsh Posté le 20-07-2004 à 11:37:55    

T509 a écrit :

il est écrit que ce que tu obtient est le résultat de ton script inclue. S'il n'y a acun résultat (echo...), il n'y a rien qui sera retourné. Dnac dans ce cas là, seul du code html peut être retourné.


 
si le serveur qui héberge la page inclue ne traite pas le php (soit parce que c'est un autre serveur, soit parce qu'il utilise une autre extension que .php), il récupéreras le bon code ;)
il peut aussi s'amuser à inclure une page php qui génère du php.
mais bon, si il peut faire autrement, c'est mieux [:proy]

Reply

Marsh Posté le 20-07-2004 à 11:44:55    

dropsy a écrit :

si le serveur qui héberge la page inclue ne traite pas le php (soit parce que c'est un autre serveur, soit parce qu'il utilise une autre extension que .php), il récupéreras le bon code ;)
il peut aussi s'amuser à inclure une page php qui génère du php.
mais bon, si il peut faire autrement, c'est mieux [:proy]


mais bien sûr, et la marmote ...
 
Tu n'aurais pas une solution plus farfelue ? Quel est l'intêret de fonctionner avec un serveur distant dans ce cas là ?


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 20-07-2004 à 11:47:00    

T509 a écrit :

mais bien sûr, et la marmote ...
 
Tu n'aurais pas une solution plus farfelue ? Quel est l'intêret de fonctionner avec un serveur distant dans ce cas là ?


comme je l'ai dit dans mon message, ce n'est pas la meilleure solution :sarcastic:
 

Reply

Marsh Posté le 20-07-2004 à 11:53:35    

oué bon je partais du point de vue de l'include local :o
perso je vois pas l'intérêt du host quand on fait un développement local :/


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed