2011-12-06 62 views
0

我有一個網站與iframe。 展臺,該網站和iframe中的網站正在檢查$_SESSION["login"]。 因此,如果會話被顯示,用戶將被註銷。會話和iframe

問題: 當用戶在站點周圍掛起一段時間並且會話顯示時,登錄頁面將出現在iframe中。 (例如,他點擊了target =「iframe」的鏈接) 我希望登錄頁面出現在父級中。

可能嗎?

+0

你有沒有考慮ü唱一些除了IFRAME以外的東西來顯示你的子內容? http://stackoverflow.com/questions/2102878/better-alternative-to-an-iframe - 不確定,但我認爲通過AJAX將您的頁面加載到DIV中會使其重定向,因此某些形式的重定向會重定向整個頁面只是子頁面,因爲瀏覽器將(有點)把它看作一個頁面。另請參閱:http://stackoverflow.com/questions/4213122/reload-page-from-ajax-loaded-subpage –

回答

2

試試這個:

<?php 
    if(!isset($_SESSION["login"])) 
    { 
?> 
<script> 
    if(self.location.href != top.location.href){ 
     top.location = '/login.php'; 
    } 
</script> 
<?php 
    } 
?> 
2

如果您可以使用Javascript,請使用top訪問頂級父頁面,並將其重定向到登錄頁面。

1

如果會話過期時間不是強制性的,爲什麼不設置會話直到瀏覽器關閉纔會過期?

<?php ini_set("session.gc_lifetime","0"); ?> 

此設置設置會話在瀏覽器關閉之前不會過期。 如果你有機會爲php.ini您可以設置爲默認

1

添加檢查,以您的登錄頁面wheter它是不是在iframe中加載,就像這樣:

var isInIFrame = (window.location != window.parent.location) ? true : false; 

如果結果如此,嘗試在頂部窗口重新加載頁面,像這樣:

window.top.location.href="/login.php"