PHP会话中的错误数据


wrong data in PHP session

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

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

以下是我迄今为止的发现:每次发生这种情况时,地址混淆的用户都会在完全相同的时间(+/-2秒)登录。我试图通过同时登录两个不同的用户来复制这一点,但没有成功比较会话数据。

假设SOAP Web服务返回的数据是正确的,那么是什么原因导致了这个问题?

编辑:以下是在电子邮件中编写和阅读会话的代码片段,代码断章取义,我遗漏了介于两者之间的部分:

EDIT2:删除了代码片段,因为问题是为检索电子邮件数据而调用的SOAP服务实现中的缓存错误。

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

您所描述的问题很可能是由于过度热衷于缓存和/或一端或另一端的数据泄漏问题而出现的。

我认为会话在PHP端不太可能混淆——然而,代码中可能存在会话别名问题。如果知道您的PHP实例是以分叉进程还是线程的形式运行,会很有帮助。

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