【问题标题】:wrong data in PHP sessionPHP会话中的错误数据
【发布时间】:2011-06-10 10:25:35
【问题描述】:

我有以下网店设置: 当用户登录时,通过 AJAX 调用脚本,该脚本根据 SOAP-Webservice 验证用户数据 并返回用户数据。当用户登录时,用户数据保存在 PHP Session 中。用户数据 仅由 SOAP 检索而不由商店存储。我使用默认的 PHP 会话处理程序。 当用户下订单时,会向用户的地址发送一封确认电子邮件。 网站流量适中,每天100单左右。

我有以下错误: 大约每三个月一次,一封电子邮件被发送到错误的地址。来自会话中的其他数据 电子邮件正文(ex.customerNo)是正确的,但显然电子邮件地址的值是错误的。

这是我目前发现的: 每次发生这种情况时,地址混淆的用户都会在完全相同的时间(+- 2 秒)登录。 我尝试通过同时登录两个不同的用户来重现此问题,但未成功 比较 Session 数据。

假设从 SOAP-Webservice 返回的数据是正确的,什么会导致这个问题?

编辑:这里是用于写入和读取 Session 和电子邮件位的代码 sn-ps 代码脱离上下文,我在两者之间省略了位:

EDIT2:删除了代码 sn-ps,因为问题原来是调用以检索电子邮件数据的 SOAP-Service 实现中的缓存错误。

【问题讨论】:

  • 如果不看一些代码,尤其是电子邮件位,这可能很难判断...
  • 没有实际代码很难说。您在会话中究竟是如何设置数据的,电子邮件部分是什么样的,您是否尝试过记录数据,以便弄清楚?
  • 我添加了用于编写阅读会话和电子邮件发件人的代码。

标签: php email session soap


【解决方案1】:

每次发生这种情况时,地址混淆的用户都在完全相同的时间(+- 2 秒)登录。我试图通过同时登录两个不同的用户并比较 Session 数据来重现这一点,但没有成功。

您描述的问题很可能是由于过度缓存和/或一端或另一端的数据泄漏问题引起的。

我认为会话在 PHP 端混淆的可能性很小 - 但是您的代码中的会话别名可能存在问题。了解您的 PHP 实例是作为分叉进程还是线程运行会很有帮助。

测试问题是否在远程服务器上的正确方法(远程服务器更可能使用线程)是编写操作脚本 - 不使用浏览器 - 并使用不同的对运行测试数百次凭据 - 不只是一次。

【讨论】:

  • 谢谢!我如何知道我的 PHP 实例是作为分叉进程还是线程运行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多