什么会导致&在URLS中自动转换为&?

时间:2010-07-20 21:03:54

标签: php

我有点卡住了。我开发了一个脚本,由于某种原因,它会自动将网址中的&转换为&

这是造成问题的一行:

$accessToken = file_get_contents('https://graph.facebook.com/oauth/access_token?client_id=' . APPID . '&redirect_uri=' . APPURL . 'callback.php&client_secret=' . APISECRET . '&code=' . $_REQUEST['code']);

这就是错误报告返回的内容:

[20-Jul-2010 15:47:35] PHP Warning:  file_get_contents(https://graph.facebook.com/oauth/access_token?client_id=xxxxxxx&amp;redirect_uri=http://apps.facebook.com/xxxxx/callback.php&amp;client_secret=xxxxxx&amp;code=) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request

在第8行的/home/pk1no/public_html/video/callback.php

有趣的是同一个脚本适用于我的Joyent专用,但不适用于我的HostGator专用。我对此感到有些困惑。

3 个答案:

答案 0 :(得分:2)

警告信息是否会被调用,而不是在调用file_get_contents之前,还有其他问题?

答案 1 :(得分:0)

您的计算机上是否启用了allow_url_fopen?否则,您无法通过URL打开文件。

您还可以尝试使用urlencode()包装URL。

答案 2 :(得分:0)

只有错误消息中包含HTML实体才能在浏览器中正确显示。

您没有正确构建您的URL,很可能通过URL fopen包装器使其无法解析。使用urlencode包装任何可能包含一些非URL安全字符的内容......

$url='https://graph.facebook.com/oauth/access_token'.
    '?client_id=' . urlencode(APPID) .
    '&redirect_uri=' . urlencode(APPURL) . 'callback.php'.
    '&client_secret=' . urlencode(APISECRET) . 
    '&code=' . urlencode($_REQUEST['code']);

$accessToken = file_get_contents($url);