PHP $ _SESSION ['key']用输入按钮值覆盖.为什么?

Hov*_*vit 5 php arrays session sessionid

在PHP购物车中遇到以下问题.

我的会话转储如下:

Array ( [username] => test@test.com [key] => 1 )
Run Code Online (Sandbox Code Playgroud)

购物车有三个按钮:

<form name='cartForm' action='cart.php' method='post'>
<input type='image' value='submit' name='continueshopping' src='x.jpg' />
<input type='image' value='submit' name='update' src='y.jpg' />
<input type='image' value='submit' name='checkout' src='z.jpg' />
Run Code Online (Sandbox Code Playgroud)

每当我按下其中一个按钮时,页面会重新加载并执行所需的操作(即删除或添加项目)...但是会话数组会更改为以下内容(取决于按下的按钮)

Array ( [username] => test@test.com [key] => continueshopping_y )
Array ( [username] => test@test.com [key] => update_y )
Array ( [username] => test@test.com [key] => checkout_y )
Run Code Online (Sandbox Code Playgroud)

[key]是保留字吗?为什么$ _SESSION ['key']的值会从只发布POST的表单中被覆盖?这是我们项目的问题,因为我们在[key]中存储了用户帐户ID,但每次在购物车中按下按钮时,该值都会被覆盖.

实际的代码很长,在这里发布它是不切实际的.不知道要发布什么,因为除了抓住session_id()之外,购物车永远不会与会话交互.真的,我只是想知道是否有人经历过类似的事情.我无法在本地服务器(PHP5)上重新创建问题,只存在于实时服务器(PHP4)上.

提前致谢.

And*_*eKR 1

不,钥匙未被保留;必须有实际代码覆盖该条目。

由于它取决于服务器配置,我建议您检查 register_globals 设置并确保它在两台服务器上都已关闭。