我有這顯示一個時間表,並且用戶可以點擊左,右網頁的區域前進/後退一週:如何處理一個PHP會話超時
<script type="text/javascript">
var TimesheetOffset = 0;
function TimesheetNav(AdjustBy) {
TimesheetOffset = TimesheetOffset + AdjustBy;
$("#timesheets").load("populate_timesheets.php?start=" + TimesheetOffset);
}
</script>
的populate_timesheets.php
腳本顯示在一個DIV面積「時間表」的ID時間表的信息,但前提是用戶登錄和他們的會話尚未過期 - 如果會話已過期,顯示登錄頁面:
if (!isset($_SESSION['login_user'])) {
header("location: index.php");
}
問題是如果會話超時,index.php
腳本出現在應該顯示時間表的地方,而不是替換整個頁面。我該如何修改PHP或JavaScript,以便如果會話超時,登錄頁面會替換整個頁面?
你可以將'$(「#timesheets」).load()'改爲可以處理響應代碼的東西。您也可以輪詢服務器以保持會話活動或在超時情況下重定向。也可以更改會話中的gc以使其保持更長時間。很多事情到目前爲止你嘗試過什麼? –
您不能從後臺請求重定向「前端」。您需要在前端執行此操作,即使用JavaScript重定向到登錄頁面。所以你的服務器端腳本只需要返回一個_value_到你的JavaScript,它可以基於這個決定。這可能意味着你不想首先使用.load,因爲它沒有這種內置的功能。所以一個「正常」的AJAX請求可能是更好的選擇,它給了你更多的靈活性來對這兩種不同的情況作出反應。 – CBroe