PHP向会话变量添加“532142118”

我有一个非常奇怪的问题,希望有一个非常简单的解释,但经过几个小时的调试后,我无法弄清楚发生了什么。

使用LAMP堆栈,php 5.4

这里是系统的简化版本,它仍然重现了一些奇怪的行为。

在一个简单的自制框架中,我制作了一个水平菜单(标签),当该标签中的页面用于搜索等时,它会记住'哪个网址处于活动状态。因此,如果稍后再回到该标签,您可以立即看到最后的搜索结果,因为get参数。

因此,菜单中的一个“选项卡”会激活此网址:

/customer/2/customer_email/

这个变量被放入一个会话变量中:$ _SESSION ['tab_menu'] ['customer_email'] = $ _SERVER ['REQUEST_URI'];

刷新页面或导航到另一个选项卡后,可以从会话中读取选项卡的URL。 但由于某种原因,存储的URL被更改为:

/customer/2/customer_email/532142118

如果我把GET参数放在url后面,那么同样奇怪的数字会被插入...无论什么过程。 因此,如果我使用此网址访问该标签:

/customer/2/customer_email/?foo=bar

会话数组在相同的页面加载中看起来像这样:

$_SESSION['tab_menu']['customer_email'] = /customer/2/customer_email/?foo=bar

但是当我导航到另一个页面后,会话数据将显示如下:

$_SESSION['tab_menu']['customer_email'] = /customer/2/customer_email/532142118

我通过var_dump($ _ SESSION)在代码中的最后一点验证$ _SESSION数组看起来没问题。 我验证了$ _SESSION数据的下一次刷新是通过在代码开头的session_start()之后立即转储数据来更改的。

如果我这样做,为了测试,会话数据中不会添加奇怪的数字:

$_SERVER['REQUEST_URI'] = '/customer/2/customer_email/';

如果我导航到另一个网址,则不会发生同样的问题:

/customer/3/customer_email/

我尝试了更多的东西:C

  • 装入会话数组中使用的密钥,但这并不重要。
  • 在另一台服务器上进行测试,使用相同的设置,在这种情况下也不会发生。
  • 尝试写入会话数据后,我把网址在会话数组,但也不会解决任何问题。
  • 使用strcmp(),strcasecmp()在字符串'/ customer / 2 / customer_email /'中比较变量$ _SERVER ['REQUEST_URI'],在Notepad ++中查看HEX字符,在PHP中使用显示为HEX的HEX stackoverflow或php.net
  • 尝试序列化URL之前,将它放入$ _SESSION ['tab_menu'] ['customer_email'],但数字532142118只是神奇地添加到序列化的数据。
  • 试过解码数字532142118,但不能把它与任何东西联系起来。 它两周没有变化。
  • 重新启动服务器
  • 几乎完全重写了控制'选项卡'的逻辑,系统仍挂在该服务器变量上。
  • 问题:

  • 什么改变会话数据? 我怎样才能进一步调试呢?
  • 为什么它不会在所有网站上发生? 我使用这个系统几个标签几年,这是这种奇怪的行为第一次发生。
  • 为什么在使用$ _SERVER变量时发生,而不是将它作为自我类型化字符串添加?
  • 这个数字是什么意思? 532142118
  • 希望得到一些反应/投入!

    编辑:添加点7和8“我试过的东西”


    最后一个答案!

    感谢这个答案,我指出了正确的方向:
    PHP会话变量在页面之间改变

    我所做的页面以及会话有问题的页面都显示了导入的电子邮件。 有些电子邮件正在加载不存在的图像,其html源代码如下:

    <img border="0" width="110" height="114" id="_x0000_i1025" src="532142118" />
    

    所以在后台,这会加载带有“532142118”的URL,完全集成在网络统计中,并且不会在屏幕上显示任何可见的var_dumps。
    我回到了在设置会话变量的地方给自己发送函数跟踪信息,以此来结束该页面多次请求。 由于图片来源的原因,额外请求的页面会使会话和请求的URL变形。
    现在,我排除了特定的url请求,不把url放在会话变量中,所以错误的img源码不会影响系统:)

    谢谢大家的意见!

    链接地址: http://www.djcxy.com/p/59727.html

    上一篇: PHP adds "532142118" to session variable

    下一篇: Pass session variable to new page when link is clicked