Я хочу сделать несколько вызовов 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;
Когда я закрываю ручку завитка и открываю новую для второго запроса, она отлично работает. Я не думаю, что это лучшая практика?
Вы можете легко передавать несколько разных типов вызовов, просто позвоните 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 в любом случае).
В PHP 5.5 вы можете использовать curl_reset ()