Aller au contenu

récupérer variables passées en POST grâce à fsockopen


Sujets conseillés

Posté (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é par cvmh
Posté (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é par Kioob
Posté

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 :)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...