買い物かごの確認ページを表示するCGI
このプログラムでは、クッキーに保存されている商品を取り出し、表の形式にまとめる。
また、商品の注文を取り消す「カートを空にする」ボタンや、
最終的な注文を実行する「注文をする」ボタンも作成する。

(printcart.cgiはここから)
#!/usr/local/bin/perl

#クッキーからデータ取得
&getCookie;

#買い物かごの商品数を$nに保存
$n=$COOKIE{'n'};

#クッキーから読み込んだ買い物かごの商品を配列@data1,@data2に保存
for($i=1;$i<=$n;$i++)
{
($data1[$i],$data2[$i])=split(/::/,$COOKIE{"item$i"});
}
この部分でクッキーから商品データを読み取り、
「::」で商品名と個数に分割し、それぞれ@data1、@data2の配列に保存する。

#商品表HTML作成
print <<A;
Content-type: text/html

<html><body>
<table border=2><caption="カートの中">
<tr>
<td>商品名</td><td>個数</td>
</tr>
A
ここまではHTMLデータをインターネットエクスプローラに送信し、

for($i=1;$i<=$n;$i++){
print "<tr><td>$data1[$i]</td><td>$data2[$i]</td></tr>";
}
この部分で商品データを表形式にしている。

print <<B;
</table>
<form action="cart.cgi" method="post">
<input type=submit value="商品ページへ戻る">
</form<

<form action="clear.cgi" method="post">
<input type=submit value="カートを空にする">
</form>
ここで商品ページに戻るボタン(cart.cgiを呼び出す)と、
カートを空にするボタン(clear.cgiを呼び出す)を作る。

<form action="order.cgi" method="post">

お名前
<input type=text name=name>

<br>ご住所
<textarea name=address></textarea>


TEL <input type=text name=tel>

<br><input type=submit value="注文をする">
</form>
B
この部分は最終注文データの作成のため、
名前、住所、電話番号を入力してもらうフォームを作成する部分。
「注文をする」ボタンを作成し、このボタンがクリックされた時には、
注文データをファイルに保存するorder.cgiを呼び出し実行する。
この時、名前、住所、TELのデータも渡される。

print "クッキー:$ENV{'HTTP_COOKIE'}";
print "</body></html>";
クッキーの確認部分(完成したら削除可)と最終タグ表示部分。

#
# Cookieの値を読み出す
#
sub getCookie {
foreach $xx (split(/; /, $ENV{'HTTP_COOKIE'})) {
($name, $value) = split(/=/, $xx);
$COOKIE{$name} = $value;
}
}
printcart.cgiでもクッキー呼び出しサブルーチンを利用する。
(printcart.cgiはここまで)