2012-12-06 50 views
0

我正在使用joomla 1.5。我有一個單獨的代碼,它位於同一個域中,但位於另一個文件夾中。我通過使用iframe訪問我的joomla代碼中的文件夾。現在我必須將會話值從joomla應用程序發送到iframe,我正在通過以下代碼來完成此操作。問題在iframe中設置會話值

echo '<iframe src="https://localhost/demo/quiz/quiz_main.php?u_d='.$user->id.'" width="910" height="885" style="background-color:transparent"></iframe>'; 

其中$用戶> id是註冊user'd ID,顯然這個頁面會如果用戶登錄打開。

然後在quiz_main.php頁我檢查u_d的價值,根據這個我正在控制這個系統。 現在的問題是,我在相同的瀏覽器中打開了兩個標籤,並使用相同的用戶名登錄。現在從一個標籤註銷。然後轉到其他選項卡。用戶可以對在iframe中運行的小應用程序執行任何操作,直到頁面未刷新。但它不應該。

請幫我解決這個問題。

+0

你可以定期檢查一些功能,用戶是否仍然登錄,如果註銷只是刪除iframe並設置某種消息? – vodich

回答

0

你必須反正執行檢查服務器端,所以在quiz_main.php你需要像

<?php 
    if(!user_is_logged_in()) 
     // Redirect to login 
?> 

爲了防止用戶執行會影響到服務器上的數據的任何行動。

你也可以使用JavaScript做一個檢查客戶端。您可以每隔n秒查詢一次服務器,以檢查用戶是否仍然登錄,並且如果沒有將用戶重定向到適當的頁面。

下面用jQuery

function logged_in() { 
    $.ajax({ 
     url: '/logged_in.php', 
     type: 'post', 
     success: function(data) { 
      data = $.parseJSON(data); 
      if(data['logged_in'] != true) 
       window.location('login.php'); 
      else 
       setTimeout('logged_in()', 5000); // calling itself in 5 seconds. 
     } 
    }); 
} 
$(document).ready(function() { 
    logged_in(); // Calling first time when the document is ready. 
}); 

只是一個粗略的草圖示例如何可以這樣做。您需要logged_in.php來處理您的要求。

+0

如何檢查每n秒?你能指導我嗎? – Sri

+0

檢查我的更新回答 – jurgemaister

+0

感謝您的幫助。但是,你能指導我如何將會話值從父頁發送到iframe,反之亦然? – Sri