|
Home > 買物カゴシステム > クッキー式カート
|
![]() |
特長
- クッキーを使った買物カゴシステムです。
- サンプルは以下にあります。
- WEB MARTの機能的な特長は以下のとおりです。
- クッキーを使った買物カゴシステムで、WEBショッピングを行うためのプログラムです。
- すべての注文画面(メール本文含む)がテンプレート式のため、自由にデザインやレイアウト変更を行うことができます。
- 買物情報としてのクッキーは、セッション・クッキーを利用するため、利用後ブラウザを閉じると買物情報は自動消去されます。
- 買物カゴ機能と、注文者の入力〜送信機能は別プログラムとし、SSLモードの利用に配慮しました。
- 都道府県別の送料計算、一定以上の送料サービス計算、支払い別の手数料計算(代引き等)などが可能です。
- オプションで在庫管理が行うことができ、在庫が「0」になると販売を自動停止します。
- 注文ログを自動保存し、管理画面よりいつでも過去の履歴注文を閲覧することができます。
- 郵便番号を入力すると、ワンタッチで都道府県以下の住所をプレ入力します(株式会社人気組提供の「AjaxZip3」を利用)。
- クレジット/銀行決済連携により、ワンストップで販売から決済までを行なうことができます (クレジット/銀行決済連携を行なうためには、別途ゼウス社との個別契約が必要)。
- v3より、文字コードが「UTF-8」になりました。v2以前からv3以降にバージョンアップする場合、データファイルの文字コードを変換する必要があります。
変換方法:
(1) data/mart.dat をFTPでダウンロードします。
(2) TeraPad等のUTF-8対応のエディタで、文字コードをUTF-8に変更します。 - このプログラムを利用する上での利用規定です。必ず目を通しておいて下さい。プログラムをダウンロードする場合、「利用規定」に同意したものとみなします。
ゼウス社との提携について
- CGIショッピングカートの利用について、これまでネットショップ様からご要望の多かった「クレジット決済/銀行決済」を可能とするために、クレジットサービス会社の「ゼウス社」と提携しました。
- 設定ファイル init.cgi で所定の設定を行うことにより、ショッピングカートでの商品販売時に支払方法で「クレジット」又は「銀行決済」を選択すると自動的に決済画面を表示させ、クレジット/銀行決済までを完結します。
- クレジット/銀行決済サービスを利用するには、ゼウスとの契約が別途必要です。詳細は以下のページをご覧ください。
ゼウス社クレジットカード決済代行システムのご案内
- 【注意】
旧バージョンであるVer.1.7以前のWEB MARTにクロスサイト・スクリプティングの脆弱性が発見されました。
Ver.1.7以前をご利用の方は、Ver.2.0以降にバージョンアップするようにしてください。
詳細は次のとおりです。届出者及び報告機関へは、この場を借りて御礼を申し上げます。・報告元:JPCERT/CC
・届出者:石橋 豪氏(三井物産セキュアディレクション株式会社)
・届出者:諌山 貴由氏(三井物産セキュアディレクション株式会社)
・脆弱性の内容:
(1) v1.7以前の場合、Cookieを利用した悪用(クロスサイト・スクリプティング)が可能。ただし、スクリプトが実行されるのは改変された Cookie を利用するブラウザ上であり、第三者に対してクロスサイト・スクリプティングの脆弱性を利用するためには、Cookie Monster など別の手法を用いて、あらかじめ対象者の Cookie を変更しておく必要があります。そのため、脅威となる可能性は極めて低いと考えます。
(2) v1.7以前の場合、Internet Explorer7 以前において実行可能な「expression」を使用したクロスサイト・スクリプティングが可能。ただし、Internet Explorer8以降や、Internet Explorer以外のブラウザ(SafariやGoogleChrom等)をお使いの場合は問題ありません。
プログラムの入手
- 以下の書庫ファイルをダウンロードします。文字コードはUTF-8になっていますので、秀丸、Terapad等のUTF-8に対応したエディタで編集してください。
- なお、従来のShift_JIS版(郵便番号連携はAjax2)は以下の V2.84 を選択してください。
- ダウンロード後、解凍 します。解凍すると以下のファイルが展開されます。
init.cgi ----------- 設定ファイル mart.cgi ----------- 買物カート本体プログラム order.cgi ---------- 買物カート注文プログラム check.cgi ---------- 動作チェック用プログラム admin.cgi ---------- 管理用プログラム mart.html ---------- 買物カゴ画面(サンプル) data/*.* ----------- データファイル lib/Jcode.pm ------- 文字コード変換モジュール [入手元] lib/Crypt/RC4.pm --- 暗号化モジュール [入手元] tmpl/*.* ----------- テンプレートファイル log/ --------------- ログ格納ディレクトリ
プログラムの設定及び設置
- 全体のディレクトリ構成とファイル位置の設置例は以下のとおりです(かっこ内はパーミッションの設定値)。
ディレクトリ構成例
public_html / (ホームディレクトリ) | +-- mart / mart.cgi [705] | order.cgi [705] | admin.cgi [705] ... 管理画面 | init.cgi [604] ... 設定ファイル | mart.html ......... 買物カゴページ(サンプル) | +-- lib / Jcode.pm | | | +-- Jcode / *.pm | +-- Crypt / *.pm | +-- data / mart.dat [606] | stock.dat [606] | num.dat [606] | raw.txt [606] | +-- log [707] / ... 注文ログが格納されるところ | +-- tmpl / *.html | *.txt | +-- ajaxzip2 / *.*
- init.cgi を エディタ で開いて以下の箇所を修正します。
- $cf{password} = '0123';
- (管理モードのためのパスワードです。英数字で指定します)
- $cf{passphrase} = "passphrase";
- (顧客情報のクッキーを暗号化するキーです。適当な英数字で指定しますが、1度決めた文字列は以後変更しないように注意してください。クッキーの復号化ができなくなります)
- $cf{ssl_mode} = 0;
- (本プログラムを SSL領域に置く場合 には「1」とします)
- $cf{master} = 'xxx@xxx.xx';
- (注文メールの送信先アドレスを指定します)
- $cf{sendmail} = '/usr/lib/sendmail';
- (サーバで定められたsendmailのパスを指定します。不明な場合は、必ずプロバイダへ確認します)
- $cf{sendm_f} = 0;
- (sendmailの仕様として、-fオプションが必要な場合「1」とします。不明な場合は、必ずプロバイダへ確認します)
- $cf{stock} = 0;
- (在庫管理を行う場合は「1」とします)
- $cf{ssl_cookie} = 0;
- (SSLモードの使用時において、顧客情報のクッキーにsecure属性を付加する場合には「1」とします。これによりクッキー情報の送受信が暗号化されます。SSLモードで使用しない場合にはここは「0」のままにします)
- $cf{pref} = [
'北海道,1260',
'青森県,1050',
:
- (都道府県名の設定です。県別に送料を指定する場合には、県名の後のコンマに続けて送料を記入します。もし、送料が不要な場合には「0」とします)
- $cf{cari_serv} = 10000;
- (一定金額以上の場合に送料を無料にする場合にその金額指定します。もし、この機能を使用しない場合には「0」とします)
- $cf{payment} = [
'銀行振込,0',
'郵便振替,0',
'代金引換,525',
);
- (支払方法の選択肢を設定します。支払い別に手数料を指定する時はコンマの後に送料を指定します。送料が不要な場合は手数料部分を「0」とします)
- $cf{op_color} = 'カラー';
$cf{op_size} = 'サイズ'; - (登録商品の属性情報を2種指定することができ、その名称を指定します。また、それに対応するフォーム側のフィールドのname値は、それぞれ color, size です)
- $cf{zeus_serv} = 0;
- (ゼウス社によるクレジット決済代行サービスを行なう場合には「1」を、クレジット及び銀行決済サービスを行う場合には「2」とします。この機能を利用する場合には、別途ゼウス社との契約が必要です。
詳細は「ゼウス社クレジットカード決済代行システムのご案内」をご覧ください) - $cf{zeus_num} = '99999';
- (ゼウス社との契約完了時に発行されるクレジット用IPコードを記入します。$cf{zeus_serv}の値が「1」又は「2」の場合に必須)
- $cf{zeus_bip} = '00000';
- (ゼウス社との契約完了時に発行される銀行用IPコードを記入します。$cf{zeus_serv}の値が「2」の場合に必須)
- mart.cgi, order.cgi, admin.cgi, check.cgi を エディタ で開いて以下の箇所を修正します。
- #!/usr/local/bin/perl
- (プロバイダで定められたPerlへのパスを指定します)
- 以上、修正が完了したら各ファイルを所定のディレクトリへFTP転送し、以下のとおり アクセス権 (パーミッション) を設定します。
ファイル名 パーミッション 転送モード 一般サーバ suEXECサーバ
CGIWrapサーバmart.cgi
order.cgi
admin.cgi
check.cgi755 or 705 701 or 700 アスキー init.cgi 644 or 604 600 アスキー lib/*.pm
lib/Jcode/*.pm
lib/Crypt/*.pm
ajaxzip2/*.*- - アスキー mart.dat
stock.dat
num.dat
raw.txt666 or 606 600 アスキー logディレクトリ 777 or 707 700 - Tips:ファイル転送の仕方は以下のページを参考にしてください。
FTP : Windows編
FTP : Macintosh編
- 以上、作業が完了したら「チェックモード」で動作チェックを行ないましょう。「check.cgi」に直接アクセスすることで、簡易的なチェックを行うことができます。なお、動作チェック後はchekc.cgiはファイル削除しておきます。
- アクセスするファイルは以下の通りです。
買物ページ : mart.html (トップ画面です)
管理ページ : admin.cgi (管理用パスワードを入力してログインします)
補足内容
- 商品登録について
最初に商品を登録する必要があります。商品登録は admin.cgi から1点ずつ行います。
- 買物カゴのフォームの書き方(サンプルの mart.html も参考にしてください)
項目 必須・任意 name属性 value属性 type属性 商品コード 必須 code admin.cgiで登録した「商品コード」 hidden 数量 必須 num 初期値としてセットする「数量」 text, select, radio 戻り先 必須 back 買物カゴのあるHTMLページの「URL」
(※必ずhttp://からの絶対パスで記述してください)hidden 色 任意 color 選択させたい「色」
(商品として色選択がない場合は指定不要)text, select, radio サイズ 任意 size 選択させたい「サイズ」
(商品としてサイズ選択がない場合は指定不要)text, select, radio 記述例(1) 色、サイズを指定しない例
■高級ペンケース
<form action="http://www.xxx.xxx/mart.cgi" method="post">
<input type="hidden" name="code" value="0001">
<input type="hidden" name="back" value="http://www.xxx.xxx/mart.html">
単価 : \1,200 (消費税別)<br>
数量 : <input type="text" name="num" value="1" size=4>
<br><br>
<input type="submit" value="購入する">
</form>
記述例(2) (数量、色、サイズをセレクトボックスで指定する例)
■高級ファイルケース
<form action="http://www.xxx.xxx/mart.cgi" method="post">
<input type="hidden" name="code" value="0002">
<input type="hidden" name="back" value="http://www.xxx.xxx/mart.html">
単価 : \1,500 (消費税別)<br>
カラー :
<select name="color">
<option value="ブルー">ブルー
<option value="ブラック">ブラック
<option value="グリーン">グリーン
</select><br>
サイズ :
<select name="size">
<option value="S">S
<option value="M">M
<option value="L">L
</select><br>
数量 :
<select name="num">
<option value="">▼選択
<option value="1">1
<option value="2">2
<option value="3">3
<option value="4">4
<option value="5">5
</select><br>
<br><br>
<input type="submit" value="購入する">
</form>
- テンプレートファイルについて
・注文画面およびメール本文はテンプレート式となっていますので、レイアウトや画面を自由にカスタマイズすることができます。
・テンプレートファイルは、すべて tmplディレクトリ に置かれています。ファイル名 用途 備考 mart.html 買物カゴ画面 addr.html 注文者情報入力画面 conf.html 確認画面 send.html 送信後画面 send-credit.html 送信後、クレジット決済連携画面 ゼウス社契約のとき send-bank.html 送信後、銀行決済連携画面 ゼウス社契約のとき error.html エラー画面 mail.txt 注文メール本文 注文者宛のメール order.txt 注文メール本文 管理者宛のメール - WEB MARTをSSLモード配下で使用するケース(例)
全ファイルをSSLモードのディレクトリに配置します。
あるいは、買物カゴ機能のプログラム (mart.cgi) と、入力・送信機能のプログラム (order.cgi) を分割配置させるとよいでしょう。後者の配置例は次のとおりです。【配置例:買物カゴと入力/送信プログラムを分割配置する場合】/home/homepage / ... FTPでログインする位置 | +-- public_html / ... 一般のディレクトリ | | | +-- mart / mart.cgi | | init.cgi | | check.cgi | | | +-- lib / *.pm | | | +-- data / *.dat | | *.txt | | | +-- log / | | | +-- tmpl / *.html | *.txt | +-- ssl_html / ... SSLモードディレクトリ | +-- mart / admin.cgi order.cgi
[ 注1 ] admin.cgi, order.cgi の require の init.cgi へのパスをフルパスで記述。
[ 注2 ] init.cgi で指定するプログラムのURLパスおよびデータファイルのサーバパスをフルパスで記述。【 admin.cgi, order.cgi指定例 】
# 外部ファイル取り込み
require '/home/homepage/public_html/mart/init.cgi';【 init.cgi指定例 】
# 買物プログラムURL 【URLパス】
$cf{mart_cgi} = 'http://www.xxx.xxx/mart/mart.cgi';
# 注文CGIプログラムURL
$cf{order_cgi} = 'https://www.xxx.xxx/mart/order.cgi';
# 管理プログラムURL 【URLパス】
$cf{admin_cgi} = 'https://www.xxx.xxx/mart/admin.cgi';
# データファイル【サーバパス】
$cf{datfile} = '/home/homepage/mart/data/mart.dat';
# 注文番号ファイル【サーバパス】
$cf{numfile} = '/home/homepage/mart/data/num.dat';
# 特商法データファイル【サーバパス】
$cf{rawfile} = '/home/homepage/mart/data/raw.txt';
# ログディレクトリ【サーバパス】
$cf{logdir} = '/home/homepage/mart/log';
# 在庫ファイル【サーバパス】
$cf{stkfile} = '/home/homepage/mart/data/stock.dat';
# テンプレートディレクトリ【サーバパス】
$cf{tmpldir} = "/home/homepage/mart/tmpl";
# クッキー(顧客情報)をSSL対応 (0=no 1=yes)
$cf{ssl_cookie} = 1;





