【问题标题】:Is it possible to clear a different session's variable?是否可以清除不同会话的变量?
【发布时间】:2011-04-29 19:58:34
【问题描述】:

我在 $_SESSION 上存储了一些信息,会话通过自定义会话处理程序存储在数据库中。

是否有一种标准方法可以“模拟”具有会话 ID 的会话或从另一个会话中清除特定变量。

我之所以问这个问题是因为我有我的网络应用程序,它的会话变量自己工作,这是一个使用贝宝的带有订单信息的实际购物车。 Paypal 通过 IPN(通知)返回付款响应,这是从他们的服务器向我的站点发出的请求。当然,这些请求会启动它们自己的会话。

我想找到一种从看到不同会话的贝宝通知请求中清除原始会话变量的方法。有没有办法做到这一点?

一个想法可能是手动编辑存储会话数据的数据库,但我想寻找标准的东西,而不考虑会话处理程序。

【问题讨论】:

  • “模拟”会话的标准方式称为“会话劫持”;并且通常受雇于您通常希望保护您的网站免受攻击的人员类型。我肯定会对使用这种技术对付贝宝感到不舒服。

标签: php session


【解决方案1】:

我之所以问这个问题是因为我有我的网络应用程序,它的会话变量自己工作,这是一个使用贝宝的带有订单信息的实际购物车。 Paypal 通过 IPN(通知)返回付款响应,这是从他们的服务器向我的站点发出的请求。当然,这些请求会启动它们自己的会话。

我想找到一种从看到不同会话的贝宝通知请求中清除原始会话变量的方法。有没有办法做到这一点?

如果您发现自己需要在其他人的会话中编辑数据,那么您一开始就不应该将该数据存储在会话中。

如果您需要阅读或以其他方式使用 IPN,也许您应该将它们存储在数据库中的实际表中。您可以将该行与用户的会话 ID 相关联,或者最好与他们的登录名或电子邮件地址相关联。

【讨论】:

    【解决方案2】:

    由于浏览器 cookie,会话可以正常工作。如果您删除 cookie,它将创建一个新会话。如果您将 cookie 更改为另一个会话的 cookie,那么您现在正在模拟该会话。

    您可以使用 Chrome 的开发者工具或 Web Developer Firefox 插件来轻松访问浏览器的 cookie。

    【讨论】:

    • 默认情况下它与 cookie 一起使用,我使用自己的会话处理程序将数据存储在数据库中。我不想更改/更改 cookie 或数据库,我正在寻找一种通用方法
    • 所有会话都使用 cookie,无论您将它们存储在服务器上的什么位置。这是从请求中识别特定用户的唯一(实用)方法。我可能不明白你的问题。
    【解决方案3】:

    你有没有尝试创建一个会话数组并给它一个 id。

    喜欢这个

    $_SESSION['ipn'] ="";
    $_SESSION['ipn']= "Mescalito";
    

    【讨论】:

    • 不确定我是否在这里关注你,这只会将数据添加到 $_SESSION,这并不是我真正要问的。
    【解决方案4】:

    首先这不应该是必要的。

    我很确定您可以在 IPN 中指定一个唯一的作业 ID。使用该唯一 ID 找出通知属于哪个用户,并编辑他们的数据。不要为此摆弄会话,这是糟糕的设计。

    【讨论】:

      猜你喜欢
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多