我想要的代码片断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