ショッピングカートなのですが、

例えば、「住所入力(cart01.php)」を入力してもらった後、
「支払方法選択(cart02.php)」に移動してもらうようなものを、PHPで書きました。
 
ざっくりした流れですが、
cart01.phpで入力してもらった内容をcart01.phpにPOSTして、バリデートやらサニタイズやら。
エラーがあれば、もう一度cart01.phpを表示し、再入力してもらう。
エラーがなければ、内容をクッキーに保存して、Location headerでcart02.phpに移動させる。
cart01.phpを介さずcart02.phpにアクセスした場合は、これもLocation headerでcart01.phpに戻す。
といったようにしています。
 
いろんな意味で、何かまずいところはありますでしょうか?
特に、Location headerで移動させている部分が気になっています。
PHPでもっとスマートに複数の入力画面をもつカートを実装する方法を教えてください。

回答の条件
  • 1人2回まで
  • 登録:2008/06/24 16:44:52
  • 終了:2008/06/27 16:32:52

回答(2件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012008/06/24 18:40:48

ポイント40pt

クッキーの内容を解析して偽造、そしてcart01.phpからのアクセスだと偽装してcart02.phpにアクセスといったプロセスを使ったDoS攻撃とか・・・。

phpならばセッションの利用が一番手っ取り早くて比較的安全ですね。

ITmedia エンタープライズ:特集:第2回 ショッピングカートの作成で分かる「PHP」の力 (1/5)

PHP Dream : セッションを利用した入力フォーム

簡単なショッピングカート - Do You PHP?

以上、コードの比較的短いサンプル的なページを探してみました。

他にも多数ありますので

googleなどで「php セッション ショッピングカート」で探してみてください。

id:DOGEAR

ご回答ありがとうございます。

 

すみません。

クッキーとセッションがごっちゃになっていました。

内容を格納しているのはセッション($_SESSION[])でした。

 

でも、参考になるサイトをありがとうございます。

2008/06/24 19:13:34
id:hatebu_music No.2

hatebu_music回答回数61ベストアンサー獲得回数22008/06/24 18:51:46

ポイント30pt

特に問題はないと思う。

Location headerでcart01.phpに戻った時に入力した内容がクリアされないようにしたほうがいい。


cart01.phpで住所入力と支払方法選択を一気に入力してもらうようにしたら、どうでしょうか?

入力するごとに画面遷移してると、途中でめんどくさくなって離脱する人もでてくると思います。

決定(送信)ボタンクリック後に、エラーを指摘されて前の画面(cart01.php)に戻ると案外ムカつくので、入力した内容をajaxとかでチェックしてくれるとありがたいかな。

id:DOGEAR

ご回答ありがとうございます。

 

元は、一気に入力させるフォームだったのですが、とあるショップのカートを見ていて、

例えば、おくりもの用なのか自宅用なのかで振り分けられたりして、

かっこいいと思ってしまい、今回の変更をしていたところでした。

なるほど離脱率やのことも考えて作らないといけませんね…参考になります。

 

ちなみに、

cart01.phpに戻った時に入力した内容はクリアされなくしてあります。

JavaScriptでフォームの値をバリデートして、リアルタイムでエラーではなくWarning?的な表示をするようにしていますが、なんだか恐いので、もう一度PHPでバリデート・サニタイズする仕様にしています。

2008/06/24 19:30:20

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません