Php HTTP/1.0 403使用Wikipedia API时禁止的错误消息

Php HTTP/1.0 403使用Wikipedia API时禁止的错误消息,php,wikipedia-api,Php,Wikipedia Api,我正在尝试使用API在维基百科中搜索填写我表格的用户键入的单词。因此,如果他们在表单中键入“cat”,API就会在维基百科中搜索包含“cat”一词的条目。我让它工作了,但现在我得到了这个信息: Warning: file_get_contents(http://en.wikipedia.org/w/api.php?action=opensearch&search=parrott): failed to open stream: HTTP request failed! HTTP/1.0

我正在尝试使用API在维基百科中搜索填写我表格的用户键入的单词。因此,如果他们在表单中键入“cat”,API就会在维基百科中搜索包含“cat”一词的条目。我让它工作了,但现在我得到了这个信息:

Warning: file_get_contents(http://en.wikipedia.org/w/api.php?action=opensearch&search=parrott): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /var/www/html/flam1-api.php on line 22
我读到了关于可能需要一个用户代理的信息,但我不确定具体要做什么。下面是我的代码:

echo“你是哪只懒猫?后果";
$visit\u id=$\u COOKIE['visit\u id'];
$all_my_variables=json_decode(文件获取内容(“/var/www/html/data/$visit_id.json”);
//var_dump($all_my_变量);
$animal=$all\u my\u variables->favoriteanimal;
echo“在维基百科上搜索你最喜欢的动物(一种$animal)的条目时,我们得到了结果:
”; $WEBITE=文件获取内容('http://en.wikipedia.org/w/api.php?action=opensearch&search=“.urlencode($animal)。”; echo$网站[0];

我非常感谢您在这方面的帮助。

您需要设置一个用户代理(可能使用
curl
扩展名而不是
file\u get\u contents
)。
file\u get\u contents
使用的默认用户代理被明确阻止,因为它通常与虐待行为相关。

您需要设置一个用户代理(可能使用
curl
扩展名而不是
file\u-get\u-contents
)。
file\u-get\u-contents
使用的默认用户代理被显式阻止,因为它通常与滥用行为相关联。

一些网站会阻止使用file\u-get\u-contents。 我现在没有要测试的技术,但是尝试使用这个函数来代替文件内容

function get_url_contents($url){
        $crl = curl_init();
        $timeout = 5;
        curl_setopt ($crl, CURLOPT_URL,$url);
        curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
        $ret = curl_exec($crl);
        curl_close($crl);
        return $ret;
}

某些网站使用文件获取内容进行阻止。 我现在没有要测试的技术,但是尝试使用这个函数来代替文件内容

function get_url_contents($url){
        $crl = curl_init();
        $timeout = 5;
        curl_setopt ($crl, CURLOPT_URL,$url);
        curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
        $ret = curl_exec($crl);
        curl_close($crl);
        return $ret;
}

请参阅。请参阅。问题是用户代理。我认为curl的默认用户代理也被阻止,因此您必须显式设置它。问题是用户代理。我认为curl的默认用户代理也被阻止,因此您必须显式设置它。