- ベストアンサー
複数のCGIを一括で動作させる方法とは?
- ネットショッピングのホームページで、お客様情報入力ページにメールアドレスを入力する項目があります。この項目を利用して、別のメルマガ用CGIの登録も同時に行いたいです。
- お客様情報を送信した後はショッピングカートの送信完了画面を表示させたいのですが、メルマガCGIは登録完了画面が表示されるタイプのCGIなので、メルマガCGIにデータを送った後は何も表示させずに終了させたいです。
- 複数のCGIに同じ情報を送る方法と、メルマガCGIにデータを送った後に何も表示させない方法について教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
$FORM{'magazine'} が取得できていないのかも知れません。 $FORM{'magazine'}='メルマガを受け取る'; if($FORM{'magazine'} eq'メルマガを受け取る'){ としてテストしてみたらどうでしょう。
その他の回答 (4)
- okmotokun
- ベストアンサー率59% (92/155)
list.datファイルに、注文者のメールアドレスは書き込まれていませんか。 書き込めないのでしたら、list.datファイルは書き込みできる属性になっていないのではありませんか。 open(LOG,"list.dat"); open(LOG,">>list.dat"); のところに、エラー処理を付けて確認してください。 open(LOG,">>list.txt"); とファイル名を変えてみて、ファイルが作られるかどうかも確認してください。
補足
たびたびご回答ありがとうございます。 open(LOG,"list.dat"); → open(LOG,"list.txt"); open(LOG,">>list.dat"); → open(LOG,"list.txt"); へ変更して試してみたのですが、list.txtというファイルは作られていませんでした。 list.datは、「読み込み」「書き込み」ともに許可されています。 こちらのサーバーのパーミッションでは、「666」となっています。 本当にすみません。原因がお分かりになりますでしょうか?
- okmotokun
- ベストアンサー率59% (92/155)
list.dat にパスが付いていませんが、このファイルはショッピングカートのCGIと同じフォルダにあるのですか。 別のフォルダにあるのなら、そのシステムパスを付けないと開けません。
補足
ご回答ありがとうございます。 list.datはcart.cgiと同じフォルダに置いております。 list.datだけなく、メールマガジン関連のファイルをすべて cart.cgiと同じフォルダに移動して試しているのですが..。 少なくとも私が試した手順に間違いはないようですか? もしよろしければ、お教え頂けると幸いです。
- okmotokun
- ベストアンサー率59% (92/155)
cart.cgi の Orderサブルーチンの最初に次のコードを書き加えれば良いと思います. ※ $FORM{'mailmaga'} はメルマガを受け取る、受け取らないのラジオボタンのnameに置き換えること ※ mailmaga_list はメルマガ読者登録ファイル名に置き換えること if($FORM{'mailmaga'} eq'メルマガを受け取る'){ open(LOG,"mailmaga_list"); while(<LOG>){ chomp; if($_ eq $FORM{'email'}){ my $match=1; last; } }close LOG; unless($match){ open(LOG,">>mailmaga_list"); print LOG "$FORM{'email'}\n"; close LOG; } }
補足
ご回答頂きありがとうございます。 下記の手順で試してみたのですが、メールアドレスがメルマガCGIに届きませんでした。何か間違いがありますでしょうか? < ※ $FORM{'mailmaga'} はメルマガを受け取る、受け取らないのラジオボタンのnameに置き換えること magazineに変更しました。 < ※ mailmaga_list はメルマガ読者登録ファイル名に置き換えること メールアドレスを格納しているのはlist.datだったので、list.datへと書き換えました。 cart.cgiの1429行目の「sub Order{」の直下にお教え頂いた下記のコードを加えました ●cart.cgiに加えたコード(抜粋) ------------- sub Order{ if($FORM{'magazine'} eq'メルマガを受け取る'){ open(LOG,"list.dat"); while(<LOG>){ chomp; if($_ eq $FORM{'email'}){ my $match=1; last; } }close LOG; unless($match){ open(LOG,">>list.dat"); print LOG "$FORM{'email'}\n"; close LOG; } } my( $chk_mailbody,$mailbody, $tax,$date,@waweek,$sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst, $date_d,$time_d,$total,$subtotal,$a_total,$postage_all,$infoline, $count,$dai_charge,$subtotal_c,$total_c,$postage_all_c,$tax_c,$dai_name, $pointnum,$dai_charge_c,$wrap_charge_c, $tax_all,$odrID,$dum,$day,$y_f,$mon_f,$mday_f,$line, $tday,$sec_f,$ref,$wari,$nop,$goods_all_ref,$goods_all_kessai_ref, $wari_c,$subtotal_o,$subtotal_o_c,$hour_f ); ---------- enter.html(お客様情報を入力するページ)に下記のコードを加えました。 ●enter.htmlに加えたコード(抜粋) ------------- <tr> <td bgcolor="#EBEBEB" class="pad">メールマガジンを受け取る<font color="#CC3300">*</font></td> <td> <input type="radio" name="magazine" value="メルマガを受け取る">受け取る<br /> <input type="radio" name="magazine" value="受け取らない">受け取らない<br /> </td> </tr> メールマガジン用のCGIとショッピングカートのCGIを同フォルダに置き試してみたところ、カートは問題なく動作するのですがメールマガジンの方にメールの情報が届きません。 私の知識が乏しいことでご迷惑をおかけしておりますが、よろしければ何が原因なのかお教え頂けませんでしょうか?
- okmotokun
- ベストアンサー率59% (92/155)
期待されている回答ではないかもしれませんが、、、 そんな面倒なことしなくても、ショッピングカートの注文受け付けのルーチンに、メルマガ購読登録のコードを書き加えればいいんじゃないですか。
補足
早速のご回答ありがとうございます。 ショッピングカートはhttp://www.cgipal.com/doc/cart.htmの 一番上の「Cart Z ver.14」というものを使わせて頂こうかと 考えているのですが、どの部分にメルマガのコードを書き加え れば良いのでしょうか? CGIに全く明るくないもので、もし差し支えなければヒントだけ でも頂けるととても助かります。 何卒よろしくお願い致します。
お礼
okmotokun様 $FORM{'magazine'} ↓ $FORM{'magazine'}='メルマガを受け取る'; if($FORM{'magazine'} eq'メルマガを受け取る'){ のように変更しましたら、無事list.datにアドレスを送ることができました! 知識のない私に最後までお付き合い下さり、本当に、本当にありがとうございました。