嘿,我所有在codeigniter視圖中都有一個javascript函數,它從代碼控制器函數中檢索一些信息,當用戶會話的超時達到時, 。在被調用PHP函數我有一個看起來像這樣的語句:當codeigniter/tank auth會話超時達到時處理php重定向
if (!$this->tank_auth->is_logged_in()) {
redirect(site_url('login'));}
這重定向他們自己的登錄頁面,如果他們還沒有登錄然而,在javascript函數我採取的應對文字和設定的內容。一個div等於它。
xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "mycontroller/myfunction/", false);
xmlhttp.send();
document.getElementById("mydiv").innerHTML=xmlhttp.responseText;
如果用戶登錄時,他們調用此函數將返回登錄頁面的responseText的,並將其插入到DIV而不是重定向到登錄頁面。這看起來很糟糕。如果用戶會話在查看此頁面時超時,我該如何阻止它這樣做?我無法更改超時限制,因爲其他應用程序依賴它。
真的,這不是一個codeigniter或tank_auth問題,簡單地說就是如何從在ajax請求中調用的php函數重定向,而不是當我最初使用該函數爲responseText生成字符串時。
只是爲了澄清,您是否在使用ajax請求的PHP文件中使用重定向? – dbf
@dbf ajax請求是一個恰好檢查用戶是否登錄的文件,這對我的應用程序是必需的。如果他們沒有登錄,則將其重定向到登錄頁面。這裏的問題是,如果ajax請求在沒有登錄的時候發生,它仍然會調用那個返回重定向登錄頁面的responseText的php函數。 –
只有當我理解正確時,如果登錄,將ajax請求調用的PHP文件的值更改爲簡單的'true'或'false',並將'document.getElementById(「mydiv」)'包裝進一個if語句,它只會在真正的情況下做出迴應,這意味着在我們的例子中「已登錄」。 – dbf