人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javascriptのクッキーについて質問です。
簡単なショッピングカートみたいなものを制作しようとしているのですが、思い通りに行きません。
対応策をご存じの方がいらしたら宜しくお願いします。

1.list.phpからカートに入れたい物のナンバーをpostで送信
2.cart.phpで受け取ったデータをsetcookie関数で格納と同時にカートに入れたリストを表示。

問題は、2のリストを表示するところでブラウザで再読み込み(リロード)をしないとカートに入れたデータが更新されません。
この説明で、お分かりになる人がいらしたら回答お待ちしております。

●質問者: black_kenchan
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● うぃんど
●50ポイント

(原因)http通信の仕様です。
ブラウザがsetcookieを受け取るタイミングは遷移の初期段階なので、
遷移無くしてphpからのクッキー更新は出来ないのです。

(対処例1)javascriptでクッキー更新を行う
document.cookie に対して書き込みを行えば新しい値を追加できますが、
サーバーへの書き込みと二重に処理を行うことになりますので、
サーバーとのやりとり中や、サーバーでの処理中にトラブルが発生すると、
データの整合性が崩れて受注トラブルになる場合もあります。

(対処例2)同期通信でクッキー更新を行う。
非同期でcart.phpにデータ送信するのではなく、
通常のページ遷移の形でcart.phpにPOSTするのが簡単で確実な方法となります。

大手通販サイトでも確認ページに遷移させるところが多いのは、
トラブル防止策の一つだったりするということです。


2 ● だわかき
●50ポイント ベストアンサー

1.list.phpからカートに入れたい物のナンバーをpostで送信した段階で、物品ナンバーのリストはcookieに持たせず、サーバ側に持たせておきsession IDとリンクさせるのが定石です。
cookieに持たせると詐称できてしまうからです。

2.cart.phpがsession IDを維持して、サーバ側に物品ナンバーを要求すればいいです。

PHP:セッションIDの受渡し
http://php.net/manual/ja/session.idpassing.php

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ