5

在 PHP 购物车中出现以下问题。

我的会话转储如下所示:

Array ( [username] => test@test.com [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] => test@test.com [key] => continueshopping_y )
Array ( [username] => test@test.com [key] => update_y )
Array ( [username] => test@test.com [key] => checkout_y )

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

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

提前致谢。

4

2 回答 2

1

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

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

于 2010-11-06T01:45:18.767 回答
0

continueshopping_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');
于 2010-11-06T02:34:39.647 回答