2013-11-20 75 views
0

我編程的網站是高中報紙。最近,管理頁面一直有一個趨勢問題。當用戶創建文章時,由於設定的時間限制,他們已被註銷。我想通過提醒進行編程,告訴用戶他們已經註銷,以便他們可以複製他們的文章並將其粘貼回原處。這是我們的超時代碼:當他們的帳戶超時時,我如何提醒管理員用戶

// Kill Session if session end exists. 
    if ($_GET['endsession']) { 
     unset($_SESSION['name']); 
     unset($_SESSION['access']); 
     unset($_COOKIE['username']); 
     setcookie("username","",time() - 3600); 
     session_destroy(); 
     header("Location: http://" . $_SERVER['HTTP_HOST'] . "/admin.php"); 
    } 

我已經嘗試在[session_destroy(); ]和[setcookie(「username」,「」,time() - 3600)之上; ],但結果沒有發生。我也試過把它放在[session_destroy(); ],但這使得這個網頁甚至沒有時間出門。

我該如何獲得一個簡單的Javascript警報運行時,函數[session_destroy(); ]運行?

+1

在session_destroy下放置js警報將毫無意義。如果它在標題調用之前,它會終止標題。如果它在後面,它可能永遠不會顯示,因爲瀏覽器無論如何都會加載下一頁。 –

+2

在瀏覽器窗口打開的情況下保持會話還可以嗎?我認爲最好避免會話超時,而不是告訴用戶他的工作是_lost_。 –

回答

1

你怎麼樣查看 - 取消設置會話之前 - 如果有,比方說,還剩5分鐘呢?

if($_GET['endsession'] < time() + 5*60) { 
    //alert the user 
} 

if($_GET['endsession']) { 
    //your code to unset the session 
} 

假設$_GET['endsession']包含時間戳。如果情況並非如此,你可以改變它或任何方式,但我認爲總的想法很清楚。

1

也許在你的身體標記:

<body onload="window.setTimeout(function() {window.alert('You have been logged out');},600000);"> 

這將會把警報在10分鐘(600秒/ 600,000ms)說:「您已被註銷」的瀏覽器。

你也可以做到這一點在體內同樣的效果:

<script>window.setTimeout(function() {window.alert('You have been logged out');},600000);</script> 

http://www.w3schools.com/jsref/met_win_settimeout.asp

+0

這沒有奏效。它的一個PHP文件,並將其更改爲HTML與主登錄功能混淆。此外,如果該方法確實起作用,那麼用戶自從他們進入頁面以來就不會再登錄。而且,我確實試圖在php文件中添加此內容,但這並不起作用。 –

+0

是的,您必須將代碼添加到頁面的HTML部分(添加到您的身體標記,只需將「onload = ...」添加到現有標記或頁面上任何位置的第二個腳本)。登錄通常是根據上次活動(距離最後一頁請求10分鐘)而不是從登錄時開始計時的。您可能需要仔細檢查一下,因爲這種超時很少見。 –

+0

PHP代碼必須在'<?php'和'?>'標籤之間。 HTML可以放在大多數頁面的任何地方(但只允許有一個''標籤)。 「」和「」標籤之間的Javascript腳本會立即執行,因此將第二個腳本放在身體標籤之間的任意位置的答案中會產生超時警報。 –

相關問題