2010-11-06 48 views
5

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

我的会话的转储的样子:

Array ([username] => [email protected] [key] => 1) 

的购物车中有三个按钮:

<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' /> 

每当我按下按钮时,页面重新加载的一个和做的事情需要(即删除或添加项目)...但会话阵列变为以下(取决于按下的按钮)

Array ([username] => [email protected] [key] => continueshopping_y) 
Array ([username] => [email protected] [key] => update_y) 
Array ([username] => [email protected] [key] => checkout_y) 

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

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

在此先感谢。

回答

1

不,密钥不保留;必须有覆盖条目的实际代码。

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

0

continuehopping_y,update_y,checkout_y - 当使用图像INPUT时,浏览器还会发送x点击坐标的y &。我的猜测是有一些本次代码如下:

foreach ($_POST as $key => $value) { 
..... 
} 

.... 
Many lines of code later .... 
.... 

$_SESSION['key'] = $key; 
// or, 
session_register('key'); 
+0

更改的foreach($ _ POST为$键=> $值)的foreach($ _ POST为$键2 => $值),使一切工作。所以我假设答案是AndreKR答案和你的答案的组合 - _POST键变量与_SESSION键变量混合在一起。 – Hovvit 2010-11-06 13:52:48