Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1524 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[RESOLU] Envoi de POST vers un autre serveur avec HEADER

n°1178619
pmusa
▓▓▓▓▓▓▓
Posté le 18-08-2005 à 11:24:32  profilanswer
 

Reprise du message précédent :
$header .= "HOST: www.smsextrapro.comrn";
 
 :heink:  :heink:


---------------
intralase surgery [:cerveau love]
mood
Publicité
Posté le 18-08-2005 à 11:24:32  profilanswer
 

n°1178620
skylight
Made in France.
Posté le 18-08-2005 à 11:24:49  profilanswer
 

Xav_ a écrit :

désolé, je vais peut être dire une connerie, mais je crois que dans ton cas, tu te prend la tete pour rien.
 
tu veux que les machines du réseau demande à la machine passerelle (celle qui a la connection) d'envoyer pour elles le formulaire en POST au site smsextrapro.com....
 
heu, sauf erreur de ma part, si tu active le partage de connexion sur la passerelle, et que sur les autres PC, tu rentre en adresse passerelle, l'IP du poste qui à la connexion, (ou alors tu laisses tous les postes de l'intranet en IP automatique (DHCP)), et tous les poste seront capables de "résoudre" l'url smsextrapro.com
Et donc ton script du début fonctionnera pour toute les machines...


 
Et va dire ça a l'admin local ... il va etre heureux de devoir connecter toutes ses machines au net ... :D bonjour failles en tous genres.

n°1178636
l3eleg
cosmik connection
Posté le 18-08-2005 à 11:35:40  profilanswer
 

tiens c'est marrant les \ \ ont disparu

n°1178637
l3eleg
cosmik connection
Posté le 18-08-2005 à 11:37:16  profilanswer
 

skylight a écrit :

Et va dire ça a l'admin local ... il va etre heureux de devoir connecter toutes ses machines au net ... :D bonjour failles en tous genres.


Et puis mon patron ne veut surtout pas entamer la productivité des troupes :D

n°1178656
Xav_
The only one...
Posté le 18-08-2005 à 11:55:15  profilanswer
 

+1 pour la productivité (la preuve, je suis au taf en ce moment ;))
 
par contre, pour ce qui est de la sécurité, ya juste la machine passerelle a bien paramétrer, et pour connecter toutes les machines, ya justement RIEN à faire, suffit de laisser la conf par défaut en DHCP...
 
Et pis d'abord, j'avais commencé mon message en disant que c'était pitete une grosse connerie, comme quoi je suis quand meme lucide :D


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°1276913
Toucouch
Posté le 04-01-2006 à 15:13:04  profilanswer
 

l3eleg a écrit :

ca y est ca marche !!!!
Le code qui va bien donc :

Code :
  1. <?php
  2. // Site information
  3. $site = "www.smsextrapro.com";
  4. $url = "/HttpSend/HttpSend.php";
  5. // Build your POST query
  6. $req = "Login=xxxxxxxx&Psw=xxxxx&DestNum=xxxxx&Signature=TEST&Message=TESTTEST";
  7. $header="";
  8. // Header info to connect to the server
  9. $header .= "POST $url HTTP/1.1\r\n";
  10. $header .= "HOST: $site \r\n";
  11. $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
  12. $header .= 'Content-Length: ' . strlen($req) . "\r\n\r\n";
  13. // Open up a connection on port 80 to server
  14. $fp = fsockopen ($site, 80, $errno, $errstr, 30);
  15. echo $site;
  16. // Can't connect? Then DIE!
  17. if (!$fp)
  18. die("I couldn't connect to $site" );
  19. // send POST request
  20. fputs ($fp, $header . $req);
  21. // Receive POST request
  22. while ( !feof($fp) )
  23. {
  24. $response = fread($fp,1024);
  25. print $response;
  26. }
  27. ?>


 
Voila pour ceux que ca interessait.
Merci à ceux qui m'ont filé quelques pistes pour m'orienter :)
Bonne fin de journée à tous !


Heu... On est obligé de descendre jusqu'au niveau des sockets pour faire ça ?

n°1323173
steph_o
Posté le 11-03-2006 à 00:38:21  profilanswer
 

Bonjour,
 
J'ai utilisé le script, et j'ai constaté qu'il était lent (réponse qui met un peu de temps à revenir).
En cherchant, j'ai trouvé qu'il manquait une ligne dans le header : Connection: close\r\n\r\n";
 
J'ai donc continué de l'utiliser, et j'ai ajouter la possibilité de faire des appels avec methode GET, alors je vous en fait profiter (car sans ce script, j'aurai dû avaler les RFC..., et c'est assez indigeste  ;) )
C'est en fait un objet (vous pouvez sortir les fonctions si vous voulez) qui dérive d'une classe (perso) SO_Erreur. Cette dernière implémente juste une fonction so_traiteErreur qui affiche un message dans une page html (vous pouvez la remplacer par un echo)
Voici l'objet :

Code :
  1. <?php
  2. class SO_Post_Get extends SO_Erreur
  3. {
  4. private $balise_debut = "SO_MAJ_DEBUT";
  5. private $balise_fin = "SO_MAJ_FIN";
  6. /* so_sendToHost
  7.  * ~~~~~~~~~~
  8.  * Params:
  9.  *   $host      - Just the hostname.  No http:// or
  10.                   /path/to/file.html portions
  11.  *   $method    - get or post, case-insensitive
  12.  *   $path      - The /path/to/file.html part
  13.  *   $data      - The query string, without initial question mark
  14.  *   $useragent - If true, 'MSIE' will be sent as
  15.                   the User-Agent (optional)
  16.  *
  17.  * Examples:
  18.  *   sendToHost('www.google.com','get','/search','q=php_imlib');
  19.  *   sendToHost('www.example.com','post','/some_script.cgi',
  20.  *              'param=First+Param&second=Second+param');
  21.  *
  22.  * Retourne la chaine réponse ou FALSE si problème connexion
  23.  *
  24.  */
  25. function so_sendToHost($host,$method,$path,$data)
  26. {
  27.     $method = strtoupper($method);
  28.  // ajout de balises pour repérer la chaine de retour dans la reponse HTTP
  29.  $data = "balise_debut=".$this->balise_debut."&balise_fin=".$this->balise_fin."&".$data;
  30.     // si methode GET ==> integre $data avec le $path
  31.     if ($method == 'GET')
  32.     {
  33.         $path .= '?'.$data;
  34.     }
  35.  // Header info to connect to the server
  36.  $header = "";
  37.  $header .= "$method $path HTTP/1.1\r\n";
  38.  $header .= "HOST: $host \r\n";
  39.  $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
  40.  $header .= "Content-Length: " . strlen($data) . "\r\n";
  41.  $header .= "Connection: close\r\n\r\n";
  42.  // Ouverture connexion avec serveur
  43.  $fp = fsockopen ($host, 80, $errno, $errstr, 30);
  44.  //Pas de connexion ==> retour erreur
  45.  if (!$fp)
  46.  {
  47.   $message = "Erreur connexion pour appel methode $method : $errno $errstr";
  48.   so_traiteErreur($message);
  49.   return FALSE;
  50.  }
  51.  // si methode POST ==> integre $data après $header
  52.  if ($method == 'POST')
  53.  {
  54.   $header .= $data;
  55.  }
  56.  // envoie requete
  57.  fputs ($fp, $header);
  58.  // evite une éventuelle attente
  59.  flush();
  60.  // Receive POST request
  61.  $reponse = "";
  62.  while ( !feof($fp) )
  63.  {
  64.   $reponse .= fread($fp,128);
  65.  }
  66.  // ferme la connexion
  67.     fclose($fp);
  68.     $this->so_extrait_reponse( $reponse);
  69.     return $reponse;
  70. }
  71. /* extrait_reponse
  72.  * ~~~~~~~~~~~~~~~
  73.  * Params:
  74.  *  reponse    : issue de la requete
  75.  *
  76.  */
  77. private function so_extrait_reponse(&$reponse)
  78. {
  79.  $pos_debut = strpos ($reponse, $this->balise_debut);
  80.  $pos_fin = strpos ($reponse, $this->balise_fin);
  81.  if ($pos_debut === FALSE)
  82.  {
  83.   $message = "Erreur réponse script : balise début introuvable";
  84.   so_traiteErreur($message);
  85.   return FALSE;
  86.  }
  87.  if ($pos_fin === FALSE)
  88.  {
  89.   $message = "Erreur réponse script : balise fin introuvable";
  90.   so_traiteErreur($message);
  91.   return FALSE;
  92.  }
  93.  $pos_debut += strlen($this->balise_debut);
  94.  $reponse = substr($reponse, $pos_debut, $pos_fin - $pos_debut);
  95.  return TRUE;
  96. }
  97. }
  98. ?>


 
Le fichier php qui recoit le post ou le get doit encadrer sa réponse avec les balise debut et fin (j'ai fait comme ça car je  ne m'en sortait pas du décodage de la réponse avec HTTP...)
Exemple :

Code :
  1. <?php
  2. $reponse = "ce que le script veut renvoyer (au pire : rien) mais sous forme de string"
  3. $sortie=$_POST['balise_debut'].$reponse.$_POST['balise_fin'];
  4. echo $sortie;
  5. ?>


Attention, le script reçoit les données en POST ici
 
Pour utiliser l'objet, il faut utiliser le code suivant :

Code :
  1. <?php
  2. $objet_post_get = new SO_Post_Get();
  3. $data = "param1=test1";
  4. $data .= "&param2=tes2";
  5. $url = "/script/script.php";
  6. $site = "localhost";
  7. $reponse = $objet_post_get->so_sendToHost($site, "post", $url, $data);
  8. echo $reponse;
  9. ?>


 
J'aurais bien aimé utiliser la methode header de PHP, mais aucun succès (et aucun script trouvé sur le net).
 
 
Voilà, j'espère que ça vous servira.

n°1323245
newneo2001
Posté le 11-03-2006 à 10:59:55  profilanswer
 

j'ai déjà fait un truc pour envoyer des sms via un prestataire externe aussi et ceux ci proposait un envoit de SMS àpartir d'un mail. J'ai préféré utiliser ça c'était plus simple. Et puis comme ça il n'y avait as de pass qui circulait en POST. Le pass était juste balancé depuis le serveur PHP vers le prestataire.


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
n°1324562
steph_o
Posté le 13-03-2006 à 21:25:44  profilanswer
 

Bonjour,
 
Juste une petite indication sur le script proposé :
  Si une donnée possède des & ==> risque de mauvais fonctionnement (HTML va croire que plusieurs variables sont transmises). Du coup, dans le script, on ne récupère plus une donnée, mais plusieurs.
 
Solution : remplacer ces & par ce que vous voulez du coté de l'emetteur, et les remettre en place du coté récepteur.
(exemlple :  

Code :
  1. // coté emetteur
  2. $trans = array("&" => "Mes_amp_a_moi" );
  3. $donnee = strtr($donnee, $trans);
  4. // coté récepteur
  5. $trans = array("Mes_amp_a_moi" => "&" );
  6. $donnee = strtr($donnee, $trans);


 
Désolé d'en rajouter sur un sujet "résolu", mais j'ai passé du temps avant de saisir ce qui n'allait pas, alors, autant être le seul.
 
Bon développement ...

n°1324864
omega2
Posté le 14-03-2006 à 10:45:24  profilanswer
 

steph_o > en php : urlencode() est fait pour ça et à l'arrivé t'auras pas à retransformer ton &. Les gas qu'on conçu la norme régissant les URI ont quand même été malin pour prévoir qu'on voudrait envoyer n'importe quel caractére.

mood
Publicité
Posté le 14-03-2006 à 10:45:24  profilanswer
 

n°1325113
steph_o
Posté le 14-03-2006 à 14:43:40  profilanswer
 

omega2 a écrit :

steph_o > en php : urlencode() est fait pour ça et à l'arrivé t'auras pas à retransformer ton &. Les gas qu'on conçu la norme régissant les URI ont quand même été malin pour prévoir qu'on voudrait envoyer n'importe quel caractére.


 
OOoooopss
 
Désolé, j'avais essayé htmlentities et special_chars ....
 
La prochaine fois je verrai à 2 fois le manuel  
donc : myself->RTFM  ;)  
 

n°1430733
themadmax
Posté le 24-08-2006 à 15:30:46  profilanswer
 

Et comment on fait en HTTPS ?

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[Résolu] simple requete en VBA :)[Résolu] Redimensionner une image externe
Recupere la valeur en post d'une liste bloquée?[php] récupérer plusieurs arguments [RESOLU]
Header et taille limite de fichier envoyé?[VBA][résolu]comment interrompre ma macro pour modifier une feuille
Probléme avec method="post" et "get" (Résolu )[Resolu]Header already sent : Je ne trouve pas malgré mes recherches
Plus de sujets relatifs à : [RESOLU] Envoi de POST vers un autre serveur avec HEADER


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR