测试页面是否在PHP函数中的iframe中

时间:2013-04-18 04:49:08

标签: php function iframe

如何调用函数来测试用户是否在PHP函数中的iframe中?我知道测试这个的唯一方法是在Javascript中,当我尝试使用echo '<script type="text/javascript"> ... </script>';

在PHP中将它作为JS函数传递时它似乎不起作用

我想将此添加到检查用户是否获得授权的函数中,因为我需要将它们指向不同的登录页面,具体取决于它们是否在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;
    }           
}

1 个答案:

答案 0 :(得分:2)

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";
    }
}

另外,请看一下这个问题,以获得更可靠的帧检测方法:How to identify if a webpage is being loaded inside an iframe or directly into the browser window?