Geo*_*ins 42
PHP从不在iframe中.PHP在服务器端执行,并生成HTML,Javascript或文本等输出.PHP生成的输出可能产生或驻留在iframe中,但从不PHP本身.
附加细节
关于您在评论中添加的其他详细信息(您希望区分直接访问您网站的请求和通过Facebook应用程序发出的请求),您可以使用以下几种技术:
您可以检查引荐来源以确定请求是来自Facebook URL,来自您自己网站上的其他页面,来自第三方网站,还是来自直接流量.此方法并非万无一失,但可能会提供比您当前收到的应用程序更多的信息.
您可以为站点上运行的应用程序和Facebook版本创建单独的URL.使用$_SERVER['REQUEST_URI']
,您可以通过'yoursite.com/fbapp'或'yoursite.com/localapp'轻松检测您的应用程序是否被访问.这两个URL都可以通过Apache的mod_rewrite或您选择的别名解决方案引用相同的脚本.
这种方法可能最容易实现.如果您在向Facebook提供应用程序URL时可以提供URL参数,只需添加参数即可.例如:
?access_method=facebook
Run Code Online (Sandbox Code Playgroud)
在PHP中,您可以轻松检查access_method
参数的存在和值,并根据需要采取措施.
Pat*_*sma 19
对于登陆这个旧线程的任何人:无论您的页面是否通过 iframe 加载,都有一种非常简单的方法来检查 PHP。
if( isset($_SERVER['HTTP_SEC_FETCH_DEST']) && $_SERVER['HTTP_SEC_FETCH_DEST'] == 'iframe' ) {}
Run Code Online (Sandbox Code Playgroud)
<?php
if(!$_SERVER['HTTP_REFERER'] == 'YourFrameURL') {
// Site is NOT loaded from iframe
die('Please load this page from YourFrameURL');
}
else {
// Site IS loaded from iframe: display content
?>
Run Code Online (Sandbox Code Playgroud)
请注意,这$_SERVER['HTTP_REFERER']
是完全不可靠的:它可以被修改。另请注意,此方法是“https 敏感的”。如果从https://x
while加载帧YourFrameURL
设置为http://x
,它将不起作用。使用以下方法修复此问题:
if(!$_SERVER['HTTP_REFERER'] == 'http://YourFrameURL' or !$_SERVER['HTTP_REFERER'] == 'https://YourFrameURL') {
Run Code Online (Sandbox Code Playgroud)