例如,如果我想设置一个触发器来触发自当前时间以来经过的每一小时,我该如何实现呢?
我正在使用PHP来编写我的后端代码,基本上,如果用户登录,我会给出一个sessionID,如果每小时都没有活动,那么会话超时。我认为它需要在PHP中实现吗?
答案 0 :(得分:4)
您可以使用cron
作业计划程序来运行脚本。
对于Windows,您可以尝试Windows Task Scheduler。它提供类似的功能。
实际上,您不需要cron
来执行此操作。
如果您想在一小时内处于非活动状态时结束会话,那么您可以这样做。
$_SESSION
变量。current_time - last_time > 1 hour
是否正确。如果是,请结束会话并重定向。答案 1 :(得分:2)
你应该使用cron脚本,而不是PHP。让PHP脚本运行数小时通常是不好的做法。
答案 2 :(得分:1)
要么设置一个每小时运行一次的cron作业,要么设置代码,以追溯计算自上次访问以来需要计算的内容。
如果你要更详细地描述你想要完成的事情,那么它将会有所帮助。答案 3 :(得分:1)
此处无需安排作业。当您为其提供会话ID时,请将会话ID存储在数据库的表中。然后按照每个请求执行此操作:
if session id row is found
if current time - last updated time > 1 hour
Do not allow access. Session is expired
else
update timestamp of session id row, setting it to the current time
allow access
end
end
基本上:每次用户请求某些内容时,您都可以更新数据库中该会话行中的时间戳字段。如果当前时间 - 上次更新时间> 1小时,然后会话无效,您不应该允许访问。
如果您想安排一个作业去删除或以其他方式停用已过期的行,那很好,但您的会话管理方案不应该依赖于此。
也就是说,如果您没有 来推广自己的会话管理,请不要。它充满了许多容易被忽视的小细节,并可能导致您的网站容易受到攻击。如果您仍然需要自己动手,请查看一些有关会话管理和身份验证的OWASP材料:
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet