簡體   English   中英

如何在PHP中重置Curl變量?

[英]How do I reset Curl variables in PHP?

我想連續做一些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將忽略之前設置的不適用於當前請求的那些(例如,在執行get時不要打擾清除POSTFIELDS,因為它們不會被CURL使用)。

在PHP 5.5中,您可以使用curl_reset()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM