●Q&A
【Q】→ 買い物かごシステムで、メールをデコードされた状態で受信したいのですが、どこをどうしたらいいのでしょうか?
【A】→ まずデコード用のcgiがどのようなcgiなのかこちらではちょっと分かりかねますので、先に「一般的な」cgiの利用方法についての話をします(あとで個別のcgi用の修正点も書きます)
shop.jsの253行目に
document.write('<FORM NAME="' + MAIL_FORM_NAME
+
'" ACTION="mailto:' + MAIL_ADDRESS + '"' +
というところがありますので、この
ACTION="mailto:' + MAIL_ADDRESS + '"
を
ACTION="/cgi-bin/mail.cgi"
のように、プロバイダまたはデコードサービスで指定されたデコード用のcgiへのパスに書き変えます(引用符の数・位置・種類を間違えないように注意して下さい)。
もし、メールCGIのMETHODとしてプロバイダからPOSTではなくてGETを使って下さいと指定されていれば(そういうことはあまりないと思いますが)、255行目の
METHOD="POST" onSubmit="return (checkValues());"
TARGET="_blank";/A>');
の"POST"を"GET"に書き換えて下さい。
以上でcgi自体へのデータ送信は動くようになると思いますが、ここから先がご利用になるcgiごとに違ってくる点です。
ここでは裏技入門キットのP.196にもデコードcgiの利用について説明してありますのでそれを参考にされると分かりやすいかと思いますが、デコードcgiは通常「隠しフィールド」を使って送信先メールアドレスや題名などを設定します。
この「隠しフィールド」の名前や役割(メールアドレスなのか題名なのかなど)や個数などはそれぞれのcgiによってばらばらです(このため汎用的に書くことが大変難しく、書籍では紹介していません)。
とりあえず、P.196で紹介したデコードサービスAlto Worldのcgiを例にとって説明しますが、実際にはお使いになるcgiに合わせて以下の修正を行なって下さい。
まず、Alto Worldのcgiで必要なのはP.197に書いてある3つのフィールド(mailto/subject/location)ですので、これを送信データに追加してやればよいということになります。
フォームで送信されるデータはshop.jsの286行目で作っています。
document.write('<INPUT TYPE="hidden" NAME="' + ORDERS_VAR + '">');
というのがそれです。
cgi用の隠しフィールドはこの行(286行目)とその次の行(287行目)の間に追加します。
P.197の例をそのまま利用すると、
document.write('<INPUT TYPE="hidden" NAME="'
+ ORDERS_VAR + '">');
document.write('<INPUT TYPE="hidden" NAME="mailto" VALUE="xxx@yyy.zzz.com">');
document.write('<INPUT TYPE="hidden" NAME="subject" VALUE="Enquet
Result">');
document.write('<INPUT TYPE="hidden" NAME="location" VALUE="http://www.yyy.zzz.com/my_thanks.page.html">');
document.write('<INPUT TYPE="submit" VALUE="' + CONFIRM_SEND_BUTTON_TEXT
+ '">');
というように3行(メールの都合上4行)を286行目と287行目の間に追加してやればよいということになります。
書き方は普通の<INPUT TYPE="...">というフォームのタグを document.write('...'); でくくるという形になります。 こうした修正を利用しているデコードサービスのcgiにあわせて行なえば、送信できるようになると思います。
送信されてくるメールは orders=品目コード@価格&品目コード@価格&... のように、品目コードと価格のペアが&で区切られてきます。
|