|
|
|
| [php] fsockopen par lefou4 |
mercredi 28 février 2007 à 10:04:53 |
Configuration: Windows XP Internet Explorer 6.0
Bonjour,
je crois comprendre q'une fois que tu as fait le put des données http tu veux faire le get de la réponse. C'est çà ? Si c'est ça il faudrait donner le code du 'post' pour voir ce que tu as mis dans la réquête et si tout est OK ..
|
OK, j'avais fait à peu près les mêmes essais que toi et il me manquait la fermeture de la connexion qui est à l'initiative du client. (Il y a déjà un moment que j'ai fait ca et je me souviens pas précisément)
Je pense qu'il manque cette en-tête dans ta séquence. $POST .= "Connection: close\r\n"; Ma séquence qui marchait était celle là // Entete du POST $POST = "POST /$the_path HTTP/1.1\r\n"; $POST .= "Host: $the_host\r\n"; $POST .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FunWebProducts; Hotbar 4.5.1.0)\r\n"; $POST .= "Accept: */*\r\n"; $POST .= "Connection: close\r\n"; $POST .= "Content-Type: application/x-www-form-urlencoded\r\n"; $POST .= "Content-Length: ".strlen($arg)."\r\n\r\n"; $POST .= "$arg\r\n"; Au cas ou cherches chez 'nexen' il y a des scripts chez eux. Il me semble aussi que tu fais une requête en http1.0 et faut faire du http1.1 maintenant. |
Bon voici le code avec modifications suite aux remarques de jlfond :
$data = "data1=blablabla1&data2=blablabla2"; $message = "POST /ma-page-pour-affichage.php HTTP/1.1\r\n"; $message .= "Accept: */*\r\n"; $message .= "Connection: close\r\n"; $message .= "Content-type: application/x-www-form-urlencoded\r\n"; $message .= "Content-length: ".strlen( $data )."\r\n"; $message .= $data."\r\n"; $fd = fsockopen( "mon_serveur", 80 ); fputs($fd,$message); fclose($fd); Je ne suis toujours pas redirigé vers ma page ma-page-pour-affichage.php. Quelqu'un aurait-il la solution ou cette redirection serait-elle impossible ??? |
J'espère que j'ai compris ce que tu veux faire et que je te fais pas faire n'importe quoi.
Avec ce code tu fais une requête vers le serveur et tu lui envoie des argument en 'POST'. Normalement te devrais maintenant lire la réponse avec un fgets ca donne un truc de ce style fputs($socket, $POST); $buf=""; while (!feof($socket)) { $buf = fgets($socket, 102400); } fclose($socket); return $buf; C'est bien ca que tu veux faire ?? Parce que te vois parler de redirection et je suis plus sûr du coup. |
Non en fait ce que tu décrit là jlfond c'est ce que font les objets XHR javascript en gros.
Ce qui est demandé c'est plutot de faire appel à une page en lui passant des paramètres en POST et non en GET. (Et donc non de récupérer les résultats de la page appellée). Perso je ne me suis jamais posé la question donc je ne sais pas. ~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~ |
Je veux en effet récupérer les résultats mais pas sur la page appelant le script. Je désire les récupérer sur une autre page.
En schématisant, d'une page j'envoie mes données POST au serveur et au retour c'est une autre page qui m'affiche les données. |
Le fgets dont j'ai parlé c'est la lecture sur la socket c'est tout. Après avoir envoyé la requête en POST.
Je pensais que tu voulais relire la réponse du serveur sur la socket. Je ne vois pas ce que l'on peut faire d'autre. |
| 10/08 22h07 | [PHP] fsockopen et le timeout | Programmation | 11/08 21h48 | 2 |
| 04/01 18h06 | [PHP] Upload fichier ac fsockopen en FTP | Programmation | 04/01 18h06 | 0 |
| 27/03 15h41 | mysql/php | Webmastering | 14/05 15h01 | 5 |
| 26/03 21h00 | php création site web | Webmastering | 15/05 19h02 | 11 |