fsockopen avec soumission de formulaire

fsockopen avec soumission de formulaire - PHP - Programmation

Marsh Posté le 08-09-2008 à 16:35:49    

Bonjour,
 
j'utilise la fonction fsockopen pour soumettre un formulaire.
 
 
voici mon code :  
 

Code :
  1. $conn = fsockopen($host, $port, $errno, $errstr, $timeout = 30);
  2. $post = "ville=nante&choix=restaurant&prix=10";
  3. $path = "monsite/soumission/";
  4.  
  5.   if($conn) {
  6.   fputs($conn, "POST $path HTTP/1.1\r\n" );
  7.   fputs($conn, "Host: $host\r\n" );
  8.   fputs($conn, "Content-type: application/x-www-form-urlencoded\r\n" );
  9.   fputs($conn, "Content-length: ".strlen($post)."\r\n" );
  10.   fputs($conn, "Cookie: PHPSESSIONID=$phpsessionid;\r\n" );
  11.   fputs($conn, "Connection: close\r\n\r\n" );
  12.   fputs($conn, $post . "\r\n\r\n" );
  13.  
  14.   while(!feof($conn)) {
  15.  echo  htmlspecialchars(fgets($conn,4096));
  16.  }
  17.   fclose($conn);
  18. }
  19.   }


 
quand je valide le formulaire directement sur le site, j'obtiens  :  

Code :
  1. <div class='ville'>Nantes</div>
  2. <div class='res'>Le bout du bout</div>


 
et moi par fsockpen avec mon code, j'obtiens :  

Code :
  1. <div cla ='ville' ss>Nantes</div>
  2. <div9b8 class='res'>Le bout du bout</div>


 
voila, après de nombreuses recherches, je me demande est ce que ça ne vient pas des entetes que j'envoi (voir mes fputs) !!
enfin je tourne pas mal en rond...
merci pour votre aide !!!


Message édité par jedebute75 le 08-09-2008 à 16:36:35
Reply

Marsh Posté le 08-09-2008 à 16:35:49   

Reply

Marsh Posté le 08-09-2008 à 17:58:20    

bon j'avance, je pense à 99% que ça vient de :
 
Transfer-Encoding: chunked  
que je vois lors de la réponse du serveur
 
part contre je me demande bien quoi lui envoyer en entête ?
 

Reply

Marsh Posté le 09-09-2008 à 09:40:55    

je me répond si ça peut aider quelqun... bon c'était trèèèès long mais après de nombreuses recherches sur le net, j'ai trouvé une solution à mon problème (il y en a plusieurs mais celle-ci me semble la plus rapide) :  
 
utiliser http 1.0 au lieu de 1.1 donc remplacer
fputs($conn, "POST $path HTTP/1.1\r\n" );
par
fputs($conn, "POST $path HTTP/1.0\r\n" );
 
dans mon cas, c'est parfait et ça ne prend pas  + de temps au chargement (voir bizarrement + rapide ça m'étonne...).


Message édité par jedebute75 le 09-09-2008 à 09:42:11
Reply

Sujets relatifs:

Leave a Replay

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