【问题标题】:Using php, prompt user to re-authorize at session timeout?使用php,提示用户在会话超时时重新授权?
【发布时间】:2010-12-02 05:27:02
【问题描述】:

我正在使用会话来授权用户。只要它们在页面之间移动就可以正常工作,并且我们将超时设置为两个小时,因此通常不会有问题。但是,对于与我们合作的用户,我可以想象他们在完成单个页面的工作后会全神贯注,然后让它静置两个小时。如果会话超时,他们就会失去工作,并且我已经让测试人员对我不满意,因为他们的会话超时(不过只有 24 分钟)。

有没有办法在会话超时时运行脚本,以便我至少可以要求用户再次登录?我知道我可以通过 javascript 来做到这一点——如果我修改网站使用的 100 多个 .php 脚本中的每一个。但是我有一个身份验证脚本,如果我可以从那里运行它,那就太好了。

谢谢,

肖恩。

【问题讨论】:

  • @Breezer - cookie 不会比使用会话更好。 @Sean - 如果您希望它在不刷新页面的情况下工作,我认为您真的需要实施 Javascript 解决方案。附带说明一下,如果您有 100 个页面需要编辑,您可能希望查看分离页面的常见部分,例如页眉,页脚并包括这些。这样你只需要编辑一个文件而不是 100 个。
  • 是的,有些东西已经被分离出来了,我使用包含。但是我被告知授权方面将以完全不同的方式完成,所以我必须在大部分网站编写完成后将其放入。哦,好吧。
  • 当然 cookie 会更好,你可以将其设置为一天后过期,它会降低服务器的性能,而会话可能会这样做
  • 在我看来问题不在于您的会话超时,而在于您没有先自动保存草稿。
  • 如果您有超过 100 个可访问的 PHP 脚本,那么您做错了。如果他们都在其顶部复制'n 粘贴代码来处理身份验证和会话,那么您这样做非常 错误。所有这些都应该在一个地方,例如有一个控制器,所有请求都通过它来处理身份验证。更容易维护。更难搞砸。

标签: php session-timeout


【解决方案1】:

如果不刷新,就不可能使用 PHP 或任何其他服务器端脚本语言提示用户。您基本上是在要求您的服务器提供浏览器未请求的内容,这就是为什么它不可能。但正如您已经知道的那样,您可以使用 JavaScript 来完成工作。

编辑:

以下内容并非一成不变或在所有情况下都是正确的,它可能适用于您的情况。 要在会话超时时运行脚本,您必须:

  • 测试会话超时。
    • 要测试会话超时,必须执行脚本。
      • 要执行脚本,必须请求它。

【讨论】:

  • 我是这么理解的。但是我看到了一些关于创建会话处理程序的内容,该处理程序可以重定向会话销毁上发生的事情。我想也许那里有答案。
  • @Sean,重定向是最简单的部分,但您仍然需要执行脚本到session_destroy() 或检测会话破坏。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
  • 2013-11-12
  • 2014-03-02
  • 1970-01-01
相关资源
最近更新 更多