我使用Apache,PHP,MySQL在localhost框中創建了一個內部web應用程序。PHP會話超時,但AJAX調用仍然有效
用戶正在使用它並在夜間將其在瀏覽器窗口中打開。當他回到應用程序並重新開始使用它時,他直到試圖離開頁面時才收到消息,這很好(並且是理想的),但他所在的頁面有許多AJAX作品,而他能夠使用(調用)ajax頁面,並讓他們出現沒有問題!他認爲自己在做工作,但是當他最終導航到應用程序中的另一個頁面時,它啓動到登錄屏幕,並且他沒有保存任何內容。
只要他呼叫AJAX頁面,我希望應用程序檢查是否存在會話標識,並在沒有找到任何標識的情況下引導回登錄頁面。我怎樣才能做到這一點?
每個AJAX頁面都是它自己的PHP頁面,並且在頁面的最頂部有呼叫session_start();和它們立即在調用自定義函數後,通過查找某個會話變量的存在來檢查用戶是否已登錄。難道這不應該找到會話變化,然後根據需要重定向,或者如果它找不到一個新的會話嘗試創建一個新的會話?
我需要類似session_continue而不是session_start。
這是從具有相關會話信息的php.ini文件摘錄的。
; Whether to use cookies.
session.use_cookies = 1
; Define the probability that the 'garbage collection' process is started
; on every session initialization.
; The probability is calculated by using gc_probability/gc_divisor,
; e.g. 1/100 means there is a 1% chance that the GC process starts
; on each request.
session.gc_probability = 1
session.gc_divisor = 1000
; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 28888
如果頁面上有一個Ajax,每個Ajax請求應該重置任何會話超時。如果碰巧會話超時併發生了ajax事件,可能會將它們重定向到ajax請求(最有可能登錄的頁面)上的另一個頁面,並且ajax響應不是預期的那樣會導致javascript中的錯誤停止任何ajax你有計時器。 –
抱歉,只要調用session_start,立即在另一個名爲check_logged_in的函數被調用並且查找$ _SESSION ['logged_in'] = true的存在之後立即更新了這些問題。如果它沒有發現它重定向到登錄頁面。應用程序中的每個頁面都包含該函數以檢查它們是否已登錄。 –