Как мне сбросить переменные Curl в PHP? - PullRequest
4 голосов
/ 12 сентября 2011

Я хочу сделать несколько вызовов Curl подряд, первый - это сообщение, но для второго я просто хочу загрузить страницу и не публиковать что-либо для выполнения.

Вот мой код, который не работает

$url = 'http://www.xxxx.com/results.php';
$curl_handle=curl_init();
curl_setopt ($curl_handle, CURLOPT_PROXY, $tor);
curl_setopt( $curl_handle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
curl_setopt($curl_handle, CURLOPT_REFERER, $referer);

curl_setopt($curl_handle, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); 
$data = 'Manufacturer=1265';
curl_setopt($curl_handle, CURLOPT_POST,1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS ,$data);
curl_setopt($curl_handle,CURLOPT_URL,$url);
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
$buffer = curl_exec($curl_handle);

$dest = 'http://www.xxxx.com/search.php';
curl_setopt($curl_handle, CURLOPT_GET, 1);
curl_setopt($curl_handle, CURLOPT_URL, $dest);
$result = curl_exec ($curl_handle);
curl_close ($curl_handle); 
echo $result;

Когда я закрываю ручку скручивания и открываю новую для второго запроса, она работает нормально. Я не думаю, что это лучшая практика, хотя?

Ответы [ 2 ]

5 голосов
/ 12 сентября 2011

Вы можете легко выполнять несколько различных типов вызовов, просто продолжайте вызывать setopt для переключения между GET и POST и при необходимости измените URL:

... your code up to the exec()...

curl_setopt($curl_handle, CURLOPT_HTTPGET, 1);
curl_setopt($curl_handle, CURLOPT_URL, 'http://....';
$buffer = curl_exec($curl_handle);

curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_URL, 'http://....';
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, array(...));
$buffer = curl_exec($curl_handle);

Просто измените нужные OPT.Curl будет игнорировать ранее установленные значения, которые не применяются к текущему запросу (например, не надо очищать POSTFIELDS при выполнении get, потому что они все равно не будут использоваться CURL).

3 голосов
/ 12 февраля 2014

В PHP 5.5 вы можете использовать curl_reset ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...