- ベストアンサー
WEBショッピングサイトのカートの識別について
- WEBショッピングサイトのカートの識別方法について、現在PHPで作成中のサイトで考えている手法は以下の2つです。
- 採番テーブルを持ち、カートの番号を連番で生成する方法。
- グローバルIPアドレスをシリアス値に変換して使用する方法ですが、この方法には実際の運用時に問題があるかもしれません。IPアドレスが変更された場合にセッションが切れるエラーが発生し、カートの番号は生成してから2時間でタイムアウトする仕組みです。他に一般的に使用されている方法があれば教えていただきたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>1.採番テーブルを持ち採番(連番)する。 ブラウザをリロードしたりすると、無限に新しい番号が採番され、不具合が発生します。 >2.グローバルIPアドレスをシリアス値に変換して使用する。 同一施設で複数のパソコンで複数の人が同時にアクセスすると、別人なのに、同じグローバルIPアドレスが振られます。 例えば「同じホテルの宿泊客」や「同じ図書館のパソコンルームにいる一般人」は、すべて、同一のグローバルIPアドレスを使ってアクセスして来ます。 >なお、1.2.以外で一般的にはこのようにしているものが有れば合わせて教えて頂ければ幸いです。 一般的には「クッキー」や「セッションID」を用いて「個」を判断します。 セッションIDは「アクセスごとに固有」なので「カートに入れる」ボタンを押した時の「セッションID」と「カートの内容」を紐付けし、その「セッションID」を元にして「固有のクッキーデータ」をアクセスしているパソコンに送ります。 アクセスしているパソコンは「送られて来たクッキー」を保存し、次回の「カート内の確認」に備えます。つまり「このクッキーに対応したカートの内容を表示して」と、サーバに要求し、サーバは「そのクッキーに対応したカートの中身はコレです」と応答します。 なお、クッキーには「保存期間」があります。 クッキーの保存期間を指定しない場合、ブラウザを閉じるとクッキーは無効になり、クッキーが無効になるとカートの中身も消失します。 クッキーの保存期間を指定した場合、ブラウザを閉じてもクッキーは保存され、指定期間を過ぎると無効になり、クッキーが無効になるとカートの中身も消失します。 なお、どちらの場合も、サーバ側は、一定期間が過ぎたら、古いカートのデータを消去しなければなりません。 このように、WEBショッピングのカートは、非常に複雑な仕組みで動いていて、知識無しで、何も無い所から自作するのは不可能です。 「実際にきちんと稼動するシステムを構築するノウハウ」は、一般には公開されていません。なぜなら「公開してしまうと、それで商売している、ソフトハウスの仕事が無くなってしまうから」です。 一応「ある程度のショップ機能をパッケージ化したレンタルサーバ」や「オープンソースで基本機能だけを提供している無料ソフトウェア」もありますが、それらは「仕組みが判らなくても、指示通りにすれば、ショップとして機能する」ので、実際にどういうノウハウで作られているのかは、利用者には判りません。 前述の「クッキーとセッションIDを使う」ってのも「ソフトハウスが公開したくないノウハウの1つ」なので、ネット上を調べても、具体例やサンプルプログラムは見付かりません。 「仕組みは判らないけど、指示通りに組み込んだら、カート機能が実現できる、無料のオープンソースのパッケージソフトを利用する」のが、一番の近道でしょう。 少なくとも「1」や「2」などの「絶対やっちゃダメな方法」しか思い付けないド素人が、何も無しに自作できる代物ではありません。
その他の回答 (3)
- bardfish
- ベストアンサー率28% (5029/17766)
カートの内容はサーバー側で保持するとして、クライアントとサーバー側とのヒモ付に関してはCookieで行うのが一般的です。 だから、Cookieについて勉強しましょう。 IPアドレスなんてクラスとかNATとかルーティングとかFirewallとかPROXYとか、色々と変化する要素ばかりだからIPネットワークに関してすっごく勉強しないと実現不可能ですよ。 勉強した結果実現不可能と知るだけでしょうが、その勉強は絶対に無駄にはなりません。
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
追記。 >今回のサイトは会員制ではないのでログインはしません。 会員制で無くても「何らかのトラブルが発生した時に備えて、運営側から連絡を取る方法」は確定しておく必要があります。 従って「利用者のメールアドレスが、有効な本人のメールアドレスである事の確認」が必須になります。 つまり「仮登録の時点で、使用者から空メールを送信させ、利用者から空メールが来たら、本登録用のURLを記載したメールを送り返し、本登録用のURLにアクセスされた時点で、そのメールアドレスをユーザー識別IDとして登録し、登録されたメールアドレスでログインしないと、ショッピングサイトが利用できない」と言う仕組みが必須になります。 じゃないと「運営側から利用者に連絡する方法が無くなってしまい、場合によっては、クレームの嵐になり、最悪、サイト閉鎖に追い込まれる」ことになります。 安直に「会員制じゃないからログインは要らないよね」などと甘い考えで居るのであれば「ショッピングサイトの運営は止めた方が良い」です。そういう考えで居るならば「運営は不可能」だと思われます。最悪のシナリオが想定できない人間は、サイトの運営をすべきではありません。
- drum_KT
- ベストアンサー率43% (1108/2554)
グローバルIPアドレスは複数人が同時に同じになることがえりえますよ。同じ企業内からのアクセスとか、同じ公衆プロキシサーバ経由とか。
お礼
ありがとうございます。 ご指摘のとおりですね。 1.案ですと採番時の重複等を考慮すれば問題は無いと思うのですが、一般的なやり方をご存知ないでしょうか。
お礼
アドバイスありがとうございました。 公開しているカートで対応することにします。