2010-06-17 144 views
2

我们有一个内部控制面板,办公室的所有员工都可以全天登录,包括客户服务。我想要设置它,以便在会话过期前让您登录1小时。我如何在PHP.ini中更改这个?在我理解之前,我做了一个修改,将会话保持打开状态,直到浏览器窗口关闭,但它并没有粘住。保持帐户登录

回答

8

有两个不同的值,可以设置:

session.gc_maxlifetime指定的后数据将被视为“垃圾”和潜在清理的秒数。

和session.cookie_lifetime这是cookie的持续时间。

http://www.php.net/manual/en/session.configuration.php

两个值可以在php.ini文件中设置,但在.htaccess文件或在你的脚本中使用的ini_set可能会重写。

0

我不认为这可以从php.ini文件完成。我认为你要么将登录时间存储在服务器上,并将其与当前时间进行比较,如果60分钟过去了,或者使用cookie,则可以删除 - 这些可以有明确的使用期限。有关cookie的更多信息,请参阅this

1

最安全的地方来实现这将在您的应用程序。您可以在每次页面加载时将会话更新时间存储在$ _SESSION中。在更新之前,请检查它是否已超过60分钟限制,在这种情况下,您可以使用session_destroy()来终止会话,然后重定向到登录页面(或类似)。

2

你也可以使用JavaScript来做这个客户端。使用AJAX调用定期向服务器“签入”,使PHP会话保持活动状态。您还可以监控用户是否在当前页面上做了任何事情,向他们显示“2分钟警告”消息,或者在达到1小时不活动期限时将其重定向到“会话终止”页面。你甚至可以使用它来“强制”用户登出。

这并不像纯粹在PHP中那样安全,但确实为您提供了构建超酷功能的更多灵活性。