如何调用函数来测试用户是否在PHP函数内的iframe中?我明白,唯一的方法来测试这是在Javascript,它似乎不工作,当我尝试传递它作为一个JS函数在PHP使用echo '<script type="text/javascript"> ... </script>';
我想将此添加到检查用户是否被授权的函数中,因为我需要根据他们是否在iframe中引导他们到不同的登录页面。这个函数在一个单独的文件中(因为它几乎在网站上的每个页面上都被调用),所以我认为我不能在直接的JS中做到这一点。
JS函数我试图调用
var isInIFrame = (window.location != window.parent.location)
function test_iframe() {
if (isInIFrame === "true") {
window.location.href = "sign_in_iframe.html";
}
else {
window.location.href = "sign_in.html";
}
PHP函数function is_user_logged(){
if ( session_id() == ''){
session_start();
}
if(!isset($_SESSION['SESS_USER_ID']) ) {
$logged = "false";
header("location: sign_in.html");
exit();
} else {
$logged = "true";
return $logged;
}
}
isInIFrame === "true"
是你的问题。===
是严格比较,所以true !== "true"
,因为一个是布尔值,而另一个是字符串。
我就去掉它或者使用if (isInIFrame)
:
function test_iframe() {
if (window.location != window.parent.location) {
window.location.href = "sign_in_iframe.html";
} else {
window.location.href = "sign_in.html";
}
}
另外,看看这个问题,一个更可靠的方法来检测帧:如何识别一个网页是加载在iframe内还是直接进入浏览器窗口?