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
问题:
希望得到一些反应/投入!
编辑:添加点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