我正在为我的实习构建一个品牌检查器。它的一部分是您输入名称的地方,检查器会在 Twitter 上检查用户名是否已被使用。这是我编写的代码(file_get_contents 在我的服务器上不起作用):
<?php
$ch = curl_init();
$timeout = 0;
curl_setopt ($ch, CURLOPT_URL, "https://twitter.com/users/username_available?username=".$z);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$twitter_contents = curl_exec($ch);
curl_close($ch);
echo $ch;
?>
$z
定义在我检查 Facebook 用户名的代码上方。它被定义为人们输入的任何可能的公司名称。
echo $ch;
输出资源 ID #3。人们到处都在谈论这不是错误,而是需要通过 var_dump()
提取的 MySQL 结果。但如您所见,我不是从 MySQL 中提取数据,而是从 Twitter.com 中提取数据。
Facebook 检查器也使用 cURL,而且它工作得很好。是的,我已经用其他变量关闭了 $ch
。
有人能解决我的问题吗?
编辑:我刚刚尝试了 echo(var_dump($ch));
,它返回了 resource(3) of type (Unknown)
最佳答案
您回显了错误的结果。在您的代码中,您使用以下代码将结果加载到 $twitter_contents
:
$twitter_contents = curl_exec($ch);
如果您将 echo 更改为此,它应该可以工作:
echo $twitter_contents;
为了进一步解释我的回答,$ch 是您的 Curl,它是一个不返回实际页面的函数。它返回一个资源,curl_exec
获取页面的实际内容并将结果加载到一个变量中。然后您可以使用它来做其他事情。
好的,经过一些评论,我想到了这个并且它起作用了......有点......
$url = "https://twitter.com/users/username_available?username=test";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result['contents']=curl_exec($ch);
$result['info']=curl_getinfo($ch);
curl_close($ch);
echo $result['contents'];
显然,我们缺少 Twitter 需要的“CURLOPT_SSL_VERIFYPEER”。
关于php - 不使用 MySQL 的资源 ID #3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27505751/