2

構築しているWebサイトのカートデータを保存するために、PHPのセッションを使用しています。すべてのデータはjson文字列として保存され、両端でjson_encode/json_decodeを使用してエンコード/デコードされます。

あるページで、json_decodeがセッションデータを消去しているようですが、これは本当に奇妙に思えます。これが私がそれを絞り込んだ関連するコードです:

$cart_data = $_SESSION['cart'];
$cart = json_decode($cart_data, 1);

テスト中にvar_dumping$_SESSION ['cart']を実行しましたが、直接伝えていなくてもjson_decodeが影響しているようです(json_decodeがないと、ダンプはjsonの文字列として表示され、配列として表示されます) )。これにより、ページが更新されたり、ページから移動したりすると、セッションが破棄されます。

かなりシンプルなものが欠けているような気がしますが、見つけられません

4

1 に答える 1

1

このスクリプトをregister_globals=onのサーバーで実行しているようです。これにより、変数が(奇妙ですが、true)$cartへの参照として事前登録されます。$_SESSION['cart']したがって、json_decode()の出力をセッションオブジェクトに直接書き込んでいます。

これを解決する最善の方法は、register_globalsを非アクティブ化するか、それが不可能な場合は、新しい値を割り当てる前に別の変数名を使用するか、バインド$cartを解除することです。unset($cart);

ドキュメントで詳細を読む:http ://www.php.net/manual/en/reserved.variables.session.php#85448

于 2012-04-16T14:21:08.607 に答える