从PHP函数中测试page是否在iframe中


Test if page is in an iframe from within a PHP function

如何调用函数来测试用户是否在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内还是直接进入浏览器窗口?