我正在使用此代码获取当前页面网址:
<?php
$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo $url;
?>
在网站上,结果如下图所示。
但是当我在Facebook应用程序中使用它时,它给了我相同的结果,而不是给我应用程序URL,如下图所示。
如何在应用页面内获取Facebook应用URL?
答案 0 :(得分:0)
更明显的方法是使用JavaScript,因为您的Web服务器不了解<frame>
本身。但除非您访问其父框架托管在同一域上的框架,否则子框架无法访问(或操纵)父框架。允许您这样做会违反JavaScript's same-origin policy。
如果他们在同一个域中,您可以找到如下所示的网址:
window.parent.location // Location object
window.parent.location.href // "http://..."
similar question's answer建议使用document.referrer
来查看请求是否来自Facebook;但这并没有告诉你完整的URL。因此,如果您有多个指向同一Facebook应用程序的应用程序ID,则无效。在这种情况下,请将查询字符串参数添加到Facebook页面选项卡URL,并将应用程序的内容基于该查询字符串参数。
例如,在Facebook中,将查询字符串?referrer=appid123
添加到页面标签URL。在PHP中,您可以检查查询字符串参数,如下所示:
if($_GET['referrer'] == 'appid123'){
// Do something for this visitor, who has come via my Facebook app
}
答案 1 :(得分:0)
我已经通过使用此代码来检查查看此网站的用户是在Facebook应用程序页面内还是在自己的网站内。
<?php
$is_fb = ( $_SERVER["SERVER_PORT"] !== 80 ) ? "".$_SERVER["SERVER_PORT"] : "";
if ($is_fb == 80) {
/// The User is inside the website
$InsideFacebook = '0';
}else{
/// The User Inside Facebook app page
$InsideFacebook = '1';
}
?>
此代码正在执行以下操作
如果网站http://my-website.com/website/
内的用户端口 80
如果用户在Facebook App Page上,则端口将与 80
不同