我想要的代碼片斷PHP會話鎖定
echo "This is a test";
進行每小時一次打印。所以當用戶第一次使用index.php時應該打印它。當用戶立即重新加載頁面時,它應該消失。一小時後應再次打印... 我該怎麼做?謝謝。
我想要的代碼片斷PHP會話鎖定
echo "This is a test";
進行每小時一次打印。所以當用戶第一次使用index.php時應該打印它。當用戶立即重新加載頁面時,它應該消失。一小時後應再次打印... 我該怎麼做?謝謝。
您可以將當前時間設置爲$ _SESSION變量,並且如果用戶更改頁面,請檢查會話時間變量。 並且如果該時間大於一個小時比顯示消息
這應該工作:
session_start();
if (!isset($_SESSION["last_shown"])) // If the session variable
// was never set
or ($_SESSION["last_shown"] < (time() - 3600)) // or was set more than
// 1 hour (3600 secs) ago
{
echo "This is a test"; // Make output
$_SESSION["last_shown"] = time(); // Update session variable
// with current time
}
而不是會話,設置Cookie在1小時內到期。在頁面加載時,如果cookie存在,則不顯示消息。會話的優勢在於用戶可以關閉瀏覽器並稍後返回(如果需要)
if (!isset($_COOKIE['sesslock']))
{
// No cookie - show message & set cookie (expires in 1 hour, 3600sec)
setcookie('sesslock','ok', time()+3600);
echo "this is a test";
}
else
{
// The cookie is there, don't display your message
}
不錯的選擇。也適用於競賽條件 – 2011-03-04 20:16:37
應該工作,除非用戶的偏執狂,並在瀏覽器關閉時刪除所有Cookie。但是,這個用戶的會話方法也會失敗。 – 2011-03-04 20:30:13
然而,就每小時運行而言,這與我的方法有相同的問題 - 它不會計算完全相同的每分鐘時間,而是從用戶提出請求時算起 – 2011-03-04 21:10:20
看起來非常好。第5行我認爲太多了。 – SandyBr 2011-03-04 20:20:56
@Sandy修,謝謝! – 2011-03-04 20:25:50
如果您忘了在一個小時後忘記運行腳本,例如1小時半之後,這將不起作用。 – Artefact2 2011-03-04 20:31:06