2010-08-15 9 views
0

Je suis en train d'envoyer des entrées simples dans un formulaire en utilisant PHP cURL afin que le serveur distant vers lequel les entrées vont les reçoive exactement de la même manière que si envoyé à partir du formulaire. Jusqu'à présent, le serveur distant accepte le message du formulaire mais pas lorsqu'il est envoyé par ce code PHP. fopen et fsockopen etc. sont désactivés par l'hôte (Yahoo) que j'utilise donc cURL semble la meilleure alternative.envoyer cURL poste à recevoir exactement comme le poste

$URL="http://remote_server.cgi"; 
$useragent = 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.8) Gecko/20100722 Ant.com Toolbar 2.0.1 Firefox/3.6.8 (.NET CLR 3.5.30729) AutoPager/0.6.1.22'; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_USERAGENT, $useragent); 
curl_setopt($ch, CURLOPT_URL, $URL); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST); 
curl_exec ($ch);  
curl_close ($ch); 

Le serveur distant n'acceptera pas les entrées lorsqu'il est envoyé de cette manière.

Que peut-on faire pour que les entrées soient reçues comme si elles étaient envoyées par le formulaire?

FORM action="http://remote_server.cgi" method="POST" 

Répondre

0

Vous manque probablement le referer et en ajoutant les en-têtes de la forme Normalement, ils ne vérifient que ces deux

$headers[]='Content-type: application/x-www-form-urlencoded'; 
    $referer="Form url goes here"; 
    curl_setopt($process, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($s,CURLOPT_REFERER, $referer); 
1

La meilleure façon de faire l'OMI, est d'utiliser un proxy HTTP pour inspecter la demande de travail. Fiddler, Charles et Firebug vont tous faire l'affaire. Regardez tous les en-têtes qui sont inclus dans les soumissions de travail pour voir ce que vous pourriez manquer.