• 締切済み

「最近チェックした商品」CGI

インターネットショッピングサイトを作成運営しているWEBデザイナー(3年目)です。 タイトルのとおり、Amazonや楽天などに商品ページを閲覧すると左メニューに表示される「最新チェックした商品」欄を設けたいと思っています。 HTMLと簡単なJavaScriptは経験がありますが、CGIは初心者です。 CGIでできているものなのかもよくわかりません…。 サーバーにはCGIプログラムとSSIスクリプトが設置できます。 ・クッキーを受け渡す程度のものなのか。 ・もっと大規模な仕組みで簡単には実現できないものなのか。 ・参考にできるサイト を教えていただけませんか? どれか一つだけでもOKです! よろしくお願いします。

みんなの回答

  • taseki
  • ベストアンサー率66% (155/233)
回答No.2

ちょっと説明が不足していましたので、補足します。 ANo.1にも書きましたが、あくまでも、cookieなどを使うのは閲覧者が誰か特定するためです。 おっしゃるような方法、cookieに履歴データを保存しておいてそこから読み出せば、クライアント側で実現できる、という発想も悪いというわけではないですが、cookieに保存できるデータ量の限界や、そもそも使えない環境もあります。 そこで、サーバーサイドプログラムとして、サーバーのデータベースに履歴データを保存します。 なので、 > 1.閲覧者のページ履歴をcookieにする。 > 2.そのcookieをもとに商品ページとURLのデータベースを検索する。 > 3.結果を欄に表示する。 は、以下のようになります。 1.閲覧者を特定する(ユーザーIDを得る)。 2.そのユーザーIDをもとに、DBの「閲覧履歴テーブル」から抽出。 3.抽出結果を表示。 1の「閲覧者を特定する」方法として、cookieやセッションや、いわゆるチケット(たしかAmazonもこれだったと思いますが未確認)などがあります。 現在ショッピングサイトを運営されているとのことですが、そのシステムにもユーザーを特定する機能があるのではないでしょうか。もしあれば、たとえば購入者が誰なのか当然わかるようになっていますよね?それを、商品閲覧のときにも同じようにチェックしておいて、記録します。 閲覧履歴テーブル ======================= ユーザーID 商品ID -----------------------  USER_002 ITEM_001  USER_001 ITEM_002  USER_002 ITEM_005  USER_001 ITEM_001  USER_001 ITEM_004  USER_003 ITEM_002  USER_008 ITEM_001 ======================= のような感じに。 で、ページを表示する際に、何らかの方法(たとえばcookie)で「閲覧者が誰なのか?」だけわかれば、あとは上記テーブルから必要データを抽出して表示します。

numnam
質問者

お礼

tasekiさん、さらに詳しいご回答ありがとうございます! cookieを勘違いしておりました…。 >そのシステムにもユーザーを特定する機能があるのではないでしょうか。 そうですよね、気が付きませんでした。 ネットショップの決済はサーバー側で提供しているものでメンテナンス画面でしか触っていなかったのですが、ファイルを探して読んでみます。

  • taseki
  • ベストアンサー率66% (155/233)
回答No.1

CGIなのかmodなのかASPなのか、などは別として、いずれにしてもサーバーサイドプログラムです。 cookieまたはセッションIDを使って、閲覧者が誰か特定し(ユーザーIDなど)、それをもとにサーバーに構築されているデータベースから情報を引き出して、表示します。 > もっと大規模な仕組みで簡単には実現できないものなのか ちょっと意味が解りませんが、大規模な仕組みにしなくても、そもそも実現していること自体が、上記のような簡単な仕組みです。 初心者と言うことでしたら、まずはcookie、データベースについて、検索したり勉強されることをおすすめします。

numnam
質問者

お礼

やはりサーバーサイドプログラムなんですね。 データベースを構築して紐付けするということでしょうか。商品数は50にも満たないのでデーターベースを構築するのはそれほど大変ではなさそうです。 1.閲覧者のページ履歴をcookieにする。 2.そのcookieをもとに商品ページとURLのデータベースを検索する。 3.結果を欄に表示する。 という流れでしょうか。 > もっと大規模な仕組みで簡単には実現できないものなのか 曖昧な言葉ですみませんでした。 個人では実現できないものなのか、という意味でした。 tasekiさん、ご回答ありがとうございました!

関連するQ&A