【问题标题】:php request/post/get/session expirationphp请求/发布/获取/会话到期
【发布时间】:2010-10-04 14:28:14
【问题描述】:

我知道 SESSION 可以过期,但是 $_REQUEST/$_POST/$_GET 变量呢?

我的问题是,我有提交信息的用户,我需要在将其插入数据库之前为该信息设置一个 ID。现在我考虑使用 SESSION 但问题是如果会话在用户将信息提交到数据库之前过期,他们就会丢失我需要的 ID。将 $_REQUEST/$_POST/$_GET 变量传递给它会是一个更好的解决方案,还是我应该只使用一个变量并重新调整脚本?

我也使用了 SESSION,因为它很容易从函数内部调用而无需传入。

function setInfo() {
   // no need to pass I can call from within
   $Id = $_SESSION['Id'];
}

这是好的做法吗?

编辑: 这作为饼干会更好吗?

【问题讨论】:

    标签: php session post get request


    【解决方案1】:

    我的第一个问题是,您不能插入一行并使用@@IDENTITY 检索自动递增的 ID?您不能真正在 $_REQUEST、$_POST 或 $_GET 中“存储”数据,该数据仅在客户端向服务器提交页面、表单、链接请求时到您完成并发送以输出结果页面时才存在.无论哪种方式,您很可能会使用 $_SESSION 空间来存储需要传送到其他页面的信息。

    【讨论】:

    • 这就是我现在正在做的,但是遇到了用户会话过期的问题。这会导致 id 被重置并发出一个新的 id。我使用 SESSION 来保存预取的数据库记录 ID 作为 id
    • 可以理解 $_REQUEST、$_POST 或 $_GET 只是在寻找另一种方法来存储信息,如果没有在会话结束时重新生成 Id。很好的提示虽然thnx
    【解决方案2】:

    您可以在表单中使用隐藏字段,并将隐藏字段的 值 存储在数据库中(“可能或很可能”您将需要一个单独的表)。当用户提交表单时,您检查提交的隐藏变量的 值 是否存在于数据库中。

    当处理来自特定值的请求时,将其从数据库中删除。

    【讨论】:

    • 我不建议将其作为安全基础。即使该字段被隐藏,我仍然可以在客户端对其进行操作。这将有助于在表单的整个生命周期内将数据保留在那里,但这并不意味着安全。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 2014-04-03
    相关资源
    最近更新 更多