2013-04-18 22 views
-1

我如何可以調用測試功能,如果用戶在一個iframe從PHP函數內內?我明白,唯一的方法來測試這是在Javascript中,它似乎並沒有工作,當我嘗試將它作爲PHP中的JS函數傳遞使用echo '<script type="text/javascript"> ... </script>';測試,如果頁面中的iframe從PHP函數

我想將此添加到函數,檢查用戶是被授權的,因爲我需要根據他們是否在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; 
    }   
} 
+2

我不知道是什麼你問。你不能通過PHP弄清楚你是否在框架中,因爲PHP與框架無關。框架是客戶端的事情,所以只有客戶端技術可以解決這個問題。 – deceze 2013-04-18 04:51:43

+0

@deceze是否有另一種方法來解決這個問題,以便我可以將用戶重定向到適當的頁面? – 2013-04-18 04:53:00

+1

我首先想問一下iframe與授權的關係。 – deceze 2013-04-18 04:54:31

回答

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?

+0

良好的漁獲不同的。 @Chaya你需要停止使用布爾值作爲字符串。這是'真實',而不是'真實'。無論是在PHP和Javascript。 – deceze 2013-04-18 04:53:09

+0

感謝@deceze用於解釋:-) – 2013-04-18 04:55:40

+0

@Blender - 現在開始測試吧,我沒有使用你貼有「<腳本類型=‘文/ JavaScript的’> ...」功能的運氣不好:-) – 2013-04-18 04:57:11