我正在编写一个php脚本,通过cURL处理页面处理,所以我有一个函数来通过URL获取和返回页面
function get_url($Url){
if (!function_exists('curl_init')){
die('Sorry cURL is not installed!');
}
set_time_limit (20);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: age_gate_birthday=19901101"));
curl_setopt($ch, CURLOPT_REFERER, "http://www.facebook.com");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
return $output;
}
在此函数中回显$ output总是返回一个HTML字符串,但是如果我在另一个函数中调用此函数
function get_vid ($sql, $url) {
$data = get_url($url);
...
返回的值是一个空字符串,尽管当get_url()正在执行它时,$ output的值已经存在。
奇怪的是,错误仅存在于特定的URL中,但与其他URL一起正常工作。
感谢您的帮助!
更新:似乎CURL在特定链接上随机返回FALSE,这似乎是这个问题的罪魁祸首,但是curl_error是空的,所以我无法确定原因。
答案 0 :(得分:1)
我认为这是因为你获得了http重定向。
尝试检查这样的http代码:
if (curl_getinfo($ch,CURLINFO_HTTP_CODE) == 302) {
// Manage http redirect here
}