我的代码在这里应该返回给我的网页源代码。
<?php
function curlGet($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$results = curl_exec($ch);
curl_close($ch);
}
$packtPage = curlGet('https://www.google.com');
print_r($packtPage);
据我了解,此代码应返回并回显该网页的源代码。但是,运行此代码时我得到一个空白页。
在到处搜索了解为什么这不能按预期工作后,我排除了故障并发现注释掉以下行
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
网页显示
302 Moved
The document has moved here.
&#39;这里&#39;是一个重定向到给定的URL的链接。
请帮助我理解发生了什么!!
答案 0 :(得分:3)
使用时
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$results = curl_exec($ch);
您告诉PHP“将cURL请求的输出存储在$results
变量中,并且不向屏幕输出任何内容。
如果要查看输出,请按以下步骤修改代码,将$results
的值返回到print_r函数:
<?php
function curlGet($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$results = curl_exec($ch);
curl_close($ch);
return $results;
}
$packtPage = curlGet('https://www.google.com');
print_r($packtPage);
正如GentlemanMax在评论中所建议的那样,在cURL请求中包含以下行也是一个好主意。此行告诉cURL遵循重定向,因为您收到HTTP/302
状态代码,表示页面已移动。 Curl可以使用以下额外选项来遵循这些重定向:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);