cvmh Posté 10 Juin 2008 Posté 10 Juin 2008 (modifié) Bonjour Je teste la fonction fsockopen gràce à un fichier d'appel : $POST_DATA='variable=44&truc=12';$HTTP_REQUEST="POST http://www.monsite.com/http-request-reponse.php HTTP/1.1\n";$HTTP_REQUEST.="Host: monsite.com\n";$HTTP_REQUEST.='Connection: close Accept-Encoding: gzip Content-Type: application/x-www-form-urlencoded Content-Length: '.strlen($POST_DATA)."\n\n";$HTTP_REQUEST.=$POST_DATA;$fp=fsockopen($host,'80',$errno,$errstr);if($fp){fwrite($fp,$HTTP_REQUEST);$response='';while(!feof($fp)){$response.=fread($fp,4056);}fclose($fp);echo "RESULTAT :".$response;//Output à traiter un minimum.}else{echo "Erreur:".$errno.':'.$errstr;} Et de l'autre côté, mon fichier appelé : echo 'OK - recu en post : '.$_POST['variable'];echo '<br><br>fin fichier Au final, lorsque je lance le script d'appel, je n'ai pas d'erreur mais on dirait que le fichier appelé n'arrive pas à récupérer les variables que je lui passe en POST. En effet, voici le retour : RESULTAT :HTTP/1.1 200 OK Date: Tue, 10 Jun 2008 07:27:34 GMT Server: Apache/1.3.37 (Unix) mod_gzip/1.3.19.1a PHP/5.1.6 mod_ssl/2.8.28 OpenSSL/0.9.6m X-Powered-By: PHP/5.1.6 Connection: close Transfer-Encoding: chunked Content-Type: text/html 31 OK - recu en post : fin fichier 0 Comment se fait-il que je ne récupère pas mes variables en POST ? J'ai essayé la même chose en GET mais même souci. Si vous aviez une piste, merci d'avance !! EDIT : en modifiant dans le fichier d'appel $HTTP_REQUEST="POST http://www.monsite.com/http-request-reponse.php HTTP/1.1\n"; par $HTTP_REQUEST="POST http://www.monsite.com/http-request-repons...=44&truc=12 HTTP/1.1\n"; Cela fonctionne : je récupère mes données en GET Mais est-ce que ça ne pose pas de pb au niveau sécurité ? Modifié 10 Juin 2008 par cvmh
Kioob Posté 10 Juin 2008 Posté 10 Juin 2008 (modifié) Hello, en théorie la requête POST à envoyer est POST /http-request-reponse.php et non l'URL complète (d'où l'entête avec Host: monsite.com) ; je suppose que ça joue sur le résultat. De plus, il manque plein de retours chariot dans cette ligne : $HTTP_REQUEST.='Connection: close Accept-Encoding: gzip Content-Type: application/x-www-form-urlencoded Content-Length: '.strlen($POST_DATA)."\n\n"; Et pour débugger plus facilement dans ton script de test tu devrais peut-être faire un var_dump( $_POST ) pour voir exactement le contenu du tableau, non ? Sinon dans l'élan, je te déconseille d'envoyer l'entête Accept-Encoding: gzip : si ton serveur gérait la compression, tu te retrouverais avec un contenu difficile à traiter, surtout avec la version 1.1 d'HTTP. EDIT : pour l'aspect sécurité, tout dépend du script en question. Si cela déclenche un traitement faisant des modifications, oui, il vaut mieux le laisser en POST pour éviter les "injections XSS". Mais mis à part ce cas, ça ne change rien non, la méthode POST n'apportant guère plus de sécurité que la méthode GET. Modifié 10 Juin 2008 par Kioob
cvmh Posté 10 Juin 2008 Auteur Posté 10 Juin 2008 Merci pour ta réponse. Je préfèrerais passer en post car en GET je vais être limité à 250caractères dans l'url et j'ai de nombreux paramètres à passer. J'ai mis en place les modifications que tu évoques mais sans succès. Je ne comprends pas, ce n'est pourtant pas compliqué... Merci en tout cas de ton implication, n'hésite pas si tu as d'autres suggestions
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant