我已经检查了所有可能的帖子,但没有找到我的问题的解决方案。不幸的是我对php很新,所以我的知识非常渺茫。因此,我提出了一个问题:
鉴于以下代码,为什么页面应该回显curl_error或$ content?
<?php
$url = "http://thenewboston.org/";
function curl_get_contents($url)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
echo curl_error($ch);
curl_close($ch);
return $data;
}
$content = curl_get_contents( $url );
echo $content;
?>
这不是我需要连接到howver的特定网址,因为我无法从我尝试的任何网址中提取数据。
感谢。
答案 0 :(得分:3)
http://thenewboston.org/
重定向到https://buckysroom.org/
,该网站需要SSL版本3.添加:
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
答案 1 :(得分:0)
@Barmar
对SSL的回答是正确的。但是这里是我的代码重构与一些更多的curl选项设置,我在这种情况下使用默认设置。请注意,用户代理通常是curl
尝试失败的最大原因,因此我将CURLOPT_USERAGENT
设置为标准Firefox字符串,但您可以随意将其更改为您认为可能是一个好用户的任何其他内容代理人设定:
$url = "http://thenewboston.org/";
function curl_get_contents($url) {
$curl_timeout = 5;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSLVERSION, 3);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $curl_timeout);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
$data = curl_exec($curl);
curl_close($curl);
return $data;
}
$content = curl_get_contents( $url );
echo $content;