我正在使用以下代码:
$agent= 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9) Gecko/2008052906 Firefox/3.0';
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL, "www.example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch);
echo $output;
但它重定向到这样:
http://localhost/aide.do?sht=_aide_cookies_
而不是URL页面。
有人可以帮我解决我的问题吗?
答案 0 :(得分:13)
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
http://docs.php.net/function.curl-setopt说:
CURLOPT_FOLLOWLOCATION
TRUE遵循服务器作为HTTP标头的一部分发送的任何“Location:”标头(注意这是递归的,PHP将跟随它发送的“Location:”标头,除非设置了CURLOPT_MAXREDIRS)。
答案 1 :(得分:8)
如果仅限于URL重定向,请参阅以下代码,我已经为您记录了这些内容,因此您可以轻松地使用它。直接,您有两个主要的cURL选项控制URL重定向(CURLOPT_FOLLOWLOCATION / CURLOPT_MAXREDIRS):
// create a new cURL resource
$ch = curl_init();
// The URL to fetch. This can also be set when initializing a session with curl_init().
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
// The contents of the "User-Agent: " header to be used in a HTTP request.
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9) Gecko/2008052906 Firefox/3.0");
// TRUE to include the header in the output.
curl_setopt($ch, CURLOPT_HEADER, false);
// TRUE to return the transfer as a string of the return value of curl_exec() instead of outputting it out directly.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// TRUE to follow any "Location: " header that the server sends as part of the HTTP header (note this is recursive, PHP will follow as many "Location: " headers that it is sent, unless CURLOPT_MAXREDIRS is set).
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// The maximum amount of HTTP redirections to follow. Use this option alongside CURLOPT_FOLLOWLOCATION.
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
// grab URL and pass it to the output variable
$output = curl_exec($ch);
// close cURL resource, and free up system resources
curl_close($ch);
// Print the output from our variable to the browser
print_r($output);
以上代码处理URL重定向问题,但它不处理cookie(您的localhost URL似乎处理cookie)。如果您希望处理来自cURL资源的cookie,那么您可能需要提供以下cURL选项: CURLOPT_COOKIE CURLOPT_COOKIEFILE CURLOPT_COOKIEJAR
有关详细信息,请访问以下链接: http://docs.php.net/function.curl-setopt