fopen et Ressource id#

fopen et Ressource id# - PHP - Programmation

Marsh Posté le 24-04-2008 à 10:55:58    

Bonjour tout le monde,
voila j'ai de nouveau un petit probleme...

 

Le but était de relancer (si le "if" est respecté )la meme page php en completant l'url avec les champs de formulaire.. type  "http://page.php?name=toto "....

 

j'essaye d'ouvrir une page internet avec fopen mais cela ne marche pas ...

 

donc j'ai testé plusieurs truc je me retrouve avec un " Ressource id #3,4 ou 5 "

 

donc j'ai voulu testé simplement le fopen
avec :

 
Code :
  1. <?php
  2. $handle = fopen("http://127.0.0.1/stage/stage2.php",'r');
  3. print $handle ;
  4. ?>
 

mais en fait la syntaxe pour afficher des page ne doit pas vraiment etre ça ...
et si il y a un autre moyen que fopen je suis preneur mais j'aimerais bien comprendre cette fonction quand meme

 

merciiii

 


Message édité par elmarokinho le 24-04-2008 à 10:59:54
Reply

Marsh Posté le 24-04-2008 à 10:55:58   

Reply

Marsh Posté le 24-04-2008 à 11:00:02    

Ben lis la doc.  
 
Et cherche aussi file_get_contents.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 24-04-2008 à 11:11:48    

Tu ne peut pas ouvrir une page comme ça et certainement pas avec fopen(), fait une redirection avec header('location: http://www.tonsite.com'); tout simplement.

Reply

Marsh Posté le 24-04-2008 à 11:20:10    

ok je vais me renseigner sur header merci

Reply

Marsh Posté le 24-04-2008 à 11:38:06    

ok, sa marche!
 merci ....
enfin preske ... dans header si je met location : $url ..cela ne marche pas ..
donc j'ai retapé l'adresse mais elle meme continet des $variables... comment faire pour qu'elles soient interprétées?  
 

Reply

Marsh Posté le 24-04-2008 à 12:07:45    

Essayes avec : header('Location: ' . $url);  voir header('location: " . $url . "');
Normalement tu dois pouvoir passer des variables, sinon tu peut toujours utiliser un javascript avec window.location au pire, c'est pas les fonctions de redirection qui manquent.

Message cité 2 fois
Message édité par masterpsx le 24-04-2008 à 12:07:58
Reply

Marsh Posté le 24-04-2008 à 12:14:34    

masterpsx a écrit :

voir header('location: " . $url . "');


 
Euuuh. [:figti]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 24-04-2008 à 14:31:49    

aucun des 2 ne fonctione ...  
en fait ce que je veux :
j'ai un script qui recherche une machine sur un switch. Si elle est detectée  sur un port gi0/1 ou gi0/2 c'est qu'lle se trouve en fait sur un autre switch interconnecté...  
 
Donc j'ai fait 2 array qui reprenne les interconnexion entre les array mais je voulais que le script se relance automatiquement dans un de ces cas :
 

Code :
  1. if ($result_port == '"Gi0/1"'){
  2. $ip_new_switch =  $liens_giga1[$ip_switch];
  3. $url = 'http://127.0.0.1/stage/stage2.php?ip_machine=$ip_machine&ip_switch=$ip_new_switch' ;
  4. header('location: " . $url . "');
  5. }


 
mais je n'y arrive pas ...  
 
ou y a til moyen de faire un refresh avec des variables en parametres?


Message édité par elmarokinho le 24-04-2008 à 14:32:53
Reply

Marsh Posté le 24-04-2008 à 15:04:48    

http://fr.php.net/manual/fr/language.types.string.php :spamafote:
 
Mais la première version de masterpsx devrait fonctionner (sauf qu'il faut une majuscule à "Location", encore que je sais pas si ça change quelque chose).
 
Il faut aussi qu'aucun affichage n'ait été effectué avant l'appel à header.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 24-04-2008 à 15:08:57    

Quel url tu obtiens après la redirection ?
et utilises plutot (guillemet simple ou double peut importe):

Code :
  1. $url = "http://127.0.0.1/stage/stage2.php?ip_machine=" . $ip_machine . "&ip_switch=" . $ip_new_switch;
  2. header("location: " . $url);


Sinon comme je te l'ai dis tu peut toujours utiliser une fonction javascript avec window.location, tu pourras même y rajouter un délai voir un message de redirection, ce genre de script, tu peut en trouver à la pelle sur le net.

Reply

Marsh Posté le 24-04-2008 à 15:08:57   

Reply

Marsh Posté le 24-04-2008 à 15:11:23    

La premiere relance bien la page mais j'ai :  


 
les variables ne sont pas interprétées :??:
 


Message édité par elmarokinho le 24-04-2008 à 15:16:40
Reply

Marsh Posté le 24-04-2008 à 15:15:24    

sielfried a écrit :


 
Il faut aussi qu'aucun affichage n'ait été effectué avant l'appel à header.


 
oui je pense que de ce point de vue la c'est ok vu que sa marche parfaitement avec google.fr

Reply

Marsh Posté le 24-04-2008 à 15:16:18    

elmarokinho a écrit :


 
oui je pense que de ce point de vue la c'est ok vu que sa marche parfaitement avec google.fr


 
Et avec ton url il se passe quoi ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 24-04-2008 à 15:18:46    

au lieu d'avoir un truc du type
htt p://http://127.0.0.1/stage/stage2.php?ip_machine=192.168.0.1&ip_switch=192.166.60.195

 

j"ai :

 

ht tp://127.0.0.1/stage/stage2.php?ip_machine=$ip_machine&ip_switch=$ip_new_switch

 


Message édité par elmarokinho le 24-04-2008 à 15:19:01
Reply

Marsh Posté le 24-04-2008 à 15:20:00    

sielfried t'as déjà donné la réponse
avec les guillemets simples les variables ne sont pas interprétées

Reply

Marsh Posté le 24-04-2008 à 15:24:40    

soju a écrit :

sielfried t'as déjà donné la réponse
avec les guillemets simples les variables ne sont pas interprétées


 
Ça doit être masterpsx, j'avais même pas capté moi... ptain c'est les bases.
 
http://fr.php.net/manual/fr/language.types.string.php encore une fois.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 24-04-2008 à 15:25:00    

masterpsx a écrit :

Essayes avec : header('Location: ' . $url);


 

sielfried a écrit :


Mais la première version de masterpsx devrait fonctionner


 
Mon code :  

Code :
  1. if ($result_port == '"Gi0/1"'){
  2. $ip_new_switch =  $liens_giga1[$ip_switch];
  3. $url = 'http://127.0.0.1/stage/stage2.php?ip_machine=$ip_machine&ip_switch=$ip_new_switch' ;
  4. header('Location: ' . $url);
  5. }


 
ça ne marche pas ...  :??:  

Reply

Marsh Posté le 24-04-2008 à 15:27:56    

Quelqu'un me rappelle le code du smiley du gars qui se tient la tête genre "mon dieu" ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 24-04-2008 à 15:30:32    

masterpsx a écrit :

Quel url tu obtiens après la redirection ?
et utilises plutot (guillemet simple ou double peut importe):

Code :
  1. $url = "http://127.0.0.1/stage/stage2.php?ip_machine=" . $ip_machine . "&ip_switch=" . $ip_new_switch;
  2. header("location: " . $url);


Sinon comme je te l'ai dis tu peut toujours utiliser une fonction javascript avec window.location, tu pourras même y rajouter un délai voir un message de redirection, ce genre de script, tu peut en trouver à la pelle sur le net.


 
 
Désolé ce message m'avais échpaé je ne l'avais pa vu  :heink:  
je vérifie tout de suite

Reply

Marsh Posté le 24-04-2008 à 15:33:16    

Oui parfait ça marche ! mais comment indiquer a l'utilisateur qu'il a été redirigé?  
par exemple afficher un messgae "redirection en cours" ?
 
et si je veux faire un simple <href> vers cette adresse ? je doit l'écrire comment ?

Message cité 1 fois
Message édité par elmarokinho le 24-04-2008 à 15:48:07
Reply

Marsh Posté le 24-04-2008 à 15:50:10    

sielfried a écrit :

Quelqu'un me rappelle le code du smiley du gars qui se tient la tête genre "mon dieu" ?

je veux bien aussi pour le mettre dans mes persos ^^
 

masterpsx a écrit :

guillemet simple ou double peut importe

au contraire
 

elmarokinho a écrit :

mais comment indiquer a l'utilisateur qu'il a été redirigé?

le header location est une redirection "invisible", si tu veux faire autrement : soit avec js soit un meta refresh

Reply

Marsh Posté le 24-04-2008 à 15:57:02    

oui mais le méta refresh c'est dans le chamsp <head> , on peut le soummettre a des if ?

 

pour l'instant je mets un lien  <a href="<?php echo $url; ?>"> pour le faire a la main mais avec un refresh ce serait cool...

 

ah nan c'est bon parfait ...
vraiment désolé d'poser des question aussi betes mais je m'y mets doucement ;-)

 

merci a vous en tout cas !


Message édité par elmarokinho le 24-04-2008 à 16:03:19
Reply

Marsh Posté le 24-04-2008 à 16:08:33    


soju a écrit :

au contraire
 

Que tu fasses echo "j'aime les " . $pattes; ou echo 'jaime les ' . $pattes; c'est pareil et c'est bon les deux, ce qui est faux c'est juste une variable entre guillemet (simple ou double encore une fois c'est pareil), elle sera considerée comme du texte.

Reply

Marsh Posté le 24-04-2008 à 16:12:37    

masterpsx a écrit :

Que tu fasses echo "j'aime les " . $pattes; ou echo 'jaime les ' . $pattes; c'est pareil et c'est bon les deux, ce qui est faux c'est juste une variable entre guillemet (simple ou double encore une fois c'est pareil), elle sera considerée comme du texte.

:non: je t'invite à lire la doc : http://fr.php.net/manual/fr/language.types.string.php
comme dit sielfried, ça fait partie des bases
 

Reply

Marsh Posté le 24-04-2008 à 16:27:08    

encore et encore des problemes de mon coté lol ...
et là... jpense que c'est du haut niveau un peu lol  
 
je fais

Code :
  1. <META HTTP-EQUIV="Refresh" CONTENT="10; <?php $url ;?>">


 
avec le meme :  

Code :
  1. if ($result_port == '"Gi0/1"'){
  2. $ip_new_switch =  $liens_giga1[$ip_switch];
  3. }
  4. if ($result_port == '"Gi0/2"'){
  5. $ip_new_switch =  $liens_giga2[$ip_switch];
  6. }
  7. $url = "http://127.0.0.1/stage/stage2.php?ip_machine=" . $ip_machine . "&ip_switch=" . $ip_new_switch;


 
Mais ceci relance la page avec ip_switch=$ip_switch lui meme  
 
alors que une echo $url; me donne bien l'adresse que je veux ...
 
je pense que c'est parce que le script garde en mémoire ip_switch sans la mettre a jour dans la nouvelle page, nan?  
 
donc comment réinitialiser les variables juste avant le refresh ?  
 


Message édité par elmarokinho le 24-04-2008 à 16:30:09
Reply

Marsh Posté le 24-04-2008 à 16:51:51    

soju a écrit :

:non: je t'invite à lire la doc : http://fr.php.net/manual/fr/language.types.string.php
comme dit sielfried, ça fait partie des bases
 


Je vois pas en quoi la doc contredis ce que j'ai dit mais bon, moi j'utilise que le guillemet double mais avec le simple ca marche aussi bien et ca reviens au même.
Si je met echo "$url"; ca marche pas mieux que echo '$url'; On ne peut pas mettre une variable entre guillement simple ou double sans des caractéres d'echappement.
 
 
Pour elmarokinho :

Code :
  1. <META HTTP-EQUIV="Refresh" CONTENT="10; <?php $url ;?>">


Ca ne veut rien dire, met plutôt :

Code :
  1. <META HTTP-EQUIV="Refresh" CONTENT="10; <?php echo $url; ?>">

Message cité 1 fois
Message édité par masterpsx le 24-04-2008 à 17:04:17
Reply

Marsh Posté le 24-04-2008 à 17:11:25    

masterpsx a écrit :

On ne peut pas mettre une variable entre guillement simple ou double

:??: tu es sûr d'avoir lu le lien ?
 

Citation :

Le plus important pour les chaînes à guillemets doubles est le fait que les variables qui s'y trouvent seront remplacées par leur valeur. Voir la section sur le traitement des variables dans les chaînes pour plus de détails

.
 
donc si tu sors toujours tes variables des chaines, autant utiliser des guillemets simples, le parser php ne se fatiguera pas pour rien...

Reply

Marsh Posté le 24-04-2008 à 17:47:39    

Ben je me retrouve sur la doc en anglais et n'ai pas eu le courage de tout lire :D mais j'ai vu vite fait par exemple ceci:

Code :
  1. // Works.
  2. echo "This works: " . $arr['foo'][3];
  3. // Works, outputs: This is fantastic
  4. echo "This is {$great}";
  5. echo "This is ${great}";


mais nul part :

Code :
  1. echo "This is $great";


 
Mais autant pour moi alors si c'est valable, j'ai toujours consideré ça comme une erreur mais je trouve ça quand même pas propre, les variables se retrouvent trop peu visible et noyées dans le texte.
 
Quand a changer ma façon de coder, c'est un peu tard maintenant mais de toute façon je n'ai que trés rarement besoin de faire ça, je ne sais même pas si dans la derniere application que j'ai faite et mise de côté depuis un bon moment, je l'ai fait ne serais-ce qu'une seule fois.

Reply

Marsh Posté le 25-04-2008 à 09:05:49    

En tout cas

 

echo $merci! ;

 



Message édité par elmarokinho le 25-04-2008 à 09:06:32
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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