如何使用PHP确定是否在Facebook iframe中加载了页面

时间:2011-10-14 01:00:12

标签: php facebook

我认为这很简单,但我无法弄清楚或发现任何相关搜索结果。

我的Facebook页面上有一个页面标签,用于在iframe中从我的服务器加载页面。我希望只有在Facebook请求时才能提供该页面。

我听说过查看用户代理,但这不起作用。至少用PHP ...我想。

如果我必须使用JavaScript重定向,但这只是草率。

理想情况下,它看起来像这样;

<?php
...
if ( ! $is_facebook )
{
    header("HTTP/1.1 404 Not Found");
}
?>

2 个答案:

答案 0 :(得分:2)

您可以按照http://developers.facebook.com/docs/authentication/signed_request/中的说明检查signed_request参数。如果您不需要太多安全性,只需检查其存在就足够了。如果你需要更多的确定性,你可以解码它来验证它真的来自Facebook。

答案 1 :(得分:0)

您不想检查要检查引荐来源但不完全可靠的用户代理

$_SERVER['HTTP_REFERER']
The address of the page (if any) which referred the user agent to the current page. This is set by the user agent. Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted.