отправить сообщение cURL, которое будет получено в точности как форма сообщения - PullRequest
0 голосов
/ 15 августа 2010

Я пытаюсь отправить простые записи в форме, используя PHP cURL, поэтому удаленный сервер, на который идут записи, получает их точно так же, как если бы они были отправлены из формы.До сих пор удаленный сервер принимает сообщения из формы, но не при отправке этим кодом PHP.fopen, fsockopen и т. д. отключены хостом (Yahoo), который я использую, поэтому cURL кажется лучшей альтернативой.

$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);

Удаленный сервер не будет принимать записи при отправке таким способом.

Что можно сделать, чтобы записи были получены так же, как если бы они были отправлены в форме?

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

Ответы [ 2 ]

1 голос
/ 15 августа 2010

Лучший способ сделать это IMO - использовать HTTP-прокси для проверки рабочего запроса. Скрипач, Чарльз и Файрбаг все сделают. Посмотрите на все заголовки, которые включены в рабочие представления, чтобы увидеть, чего вам не хватает.

0 голосов
/ 15 августа 2010

Вы, вероятно, скучаете по рефереру и добавляете заголовки из формы. Обычно они проверяют только эти два

   $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); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...