【问题标题】:Is there a way to refresh an expired SESSION variable?有没有办法刷新过期的 SESSION 变量?
【发布时间】:2016-09-26 15:20:00
【问题描述】:

我有一张桌子。当用户单击该表中的项目时,它会获取表行的 id 并设置会话变量,然后加载表单。 session 变量很重要,因为它是我需要添加到的文件的 id。

当他们填写完表单数据后,它会通过 jquery 发布到 php 文件中,然后我使用 session 变量将表单数据添加到数据库中的特定条目中。

问题是这样的。当表单出现时,id 位于会话变量中,因此如果他们在填写表单之前突然出现喝杯茶,会话变量可能会过期。

所以当提交按钮被按下时它不能添加正确的 id 因为它已经过期了。

我曾想过在表单上使用隐藏的 id,但我认为这不是很安全。我还想如果我使用隐藏字段,数据可能会在发送前被篡改。

如果过期会话变量不存在,有没有办法刷新它?

【问题讨论】:

  • 不,不是。为什么不只是延长超时期限?如果获取 cuppa 的时间超过 15 分钟,那么用户应该承受不做他们工作的痛苦。
  • @JayBlanchard:cookie 如何比隐藏的表单字段更安全?
  • @MarcB 不是更安全,我想我应该解释得更好。
  • 扩展@MarcB 所说的内容......当人们离开办公桌时保持变量不变也不安全。您担心表单变量与 cookie 的安全性......同时其他人可以坐在空桌子旁,不顾一切地做事。
  • 正如@MarcB 所说,您可以延长 cookie 的生命周期,或者另一方面,您也可以将其设置为“0”,这意味着 cookie 将“永远”存在,但仅存在于当前浏览器中执行。即:当用户最终关闭浏览器时,cookie 被强制过期(与生命周期设置为非零值不同)。

标签: php jquery session


【解决方案1】:

在表单上使用隐藏的 id 是正确的方法。您只需要确保允许用户在保存之前编辑该表单/ID。您还应该对变量进行正常的消毒检查。

【讨论】:

  • 我以前用过隐藏id,但我担心使用这种方法可能会受到攻击。我的意思是在这种情况下,id 不是秘密,但我不希望他们更改 id,以便他们可以添加到他们不应该添加到您看到的内容中。
  • @ThomasWilliams 我认为我们还没有理解您当前的代码是如何工作的,并假设 ID 已经在页面 HTML 中的某个位置。
  • @ThomasWilliams 他们是否将 ID 更改为其他内容并不重要,是否允许他们编辑其他内容。因此,当您保存表单时,您需要检查该人是否可以看到和/或保存该表单。无论如何,你应该这样做。
  • 他们不允许更改 id,但是当我单击按钮时,如果 id 在隐藏字段中,我仍然需要从 jquery 发布该 id,但是发布的任何内容都可以被篡改.这就是为什么我使用了一个不能被篡改的 SESSION 变量,但是我遇到了会话超时的问题。我不想延长会话,由于各种原因,但我想知道会话到期后是否可以恢复
  • 他们为什么不能更改ID?
猜你喜欢
  • 2018-05-26
  • 2019-11-28
  • 2020-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多