5

PHP ショッピング カートで次の問題が発生します。

セッションのダンプは次のようになります。

Array ( [username] => test@test.com [key] => 1 )

ショッピング カートには 3 つのボタンがあります。

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

ボタンの1つを押すたびに、ページが再読み込みされ、必要なこと(つまり、アイテムの削除または追加)が行われます...しかし、セッション配列は次のように変更されます(押されたボタンに応じて)

Array ( [username] => test@test.com [key] => continueshopping_y )
Array ( [username] => test@test.com [key] => update_y )
Array ( [username] => test@test.com [key] => checkout_y )

[キー] は予約語ですか? $_SESSION['key'] の値が、すべてを POST するだけのフォームから上書きされるのはなぜですか? ユーザー アカウント 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 に答える