電子書籍の厳選無料作品が豊富!

「とほほのwww入門」さんのwwwmailというメールフォームcgiを使わせてもらっています。
このメールフォームに未入力のチェックをさせたいのですが、どうしてもうまくいきません。
例えば「名前」を入力必須項目にしたいので、未入力だった場合、エラーを表示させたいのです。

他のサイトなどを参考に、

#名前がないときの処理
if ($FORM{'NAME'} eq "") {
&err('名前が記入されていません。');
}
と入れてみたりしたのですが、Internal Server Error がでてしまいます。
また、現在配布されているものと違ったりするようです。

CGIに関してはあまり詳しくなく、本当に簡単な改造をしたことがある程度です。どなたかご存知の方がいらっしゃいましたらぜひ宜しくお願いいたします!

A 回答 (3件)

ちは(^^)



僕もまだあまり詳しくないので基本的な感覚で$in{'NAME'}の答えを出したのですが(自分はいつもこれで使ってるので・・・)

『WwwMail Ver3.26 - メール送信フォーム』ですか?

僕も初めDLして表示しようとしたらサーバーエラーが出ました(><)

#!/usr/local/bin/perl
僕はアパッチを使ってるのでここの記述が違ってて
(まだ僕はHP公開はしてないのでデバック表示しかしてないので↓は使えないかもしれないですけど)

#! c:/perl/bin/perl
としたらwwwmail.cgiスクリプト内の『自己診断機能』というところが表示されました
mimew.pl
jcode.pl
BLATJ.EXE
が無い状態で表示しようとしたため(--;)

元の(何も手を加えていない)ほうは正常に機能するのでしょうか?
wwwmail.htmlは普通に表示されるでしょうからwwwmail.cgiのほう・・・

デフォルトで表示されないのなら行頭の部分が違うと思います
表示されて

『CGIは正常に動作しています。

~~~~ がありません。』

という風に表示されるのであれば・・・まぁフォルダそのまま使うのでしょうからplファイルはあるので『/usr/lib/sendmail がありません。』が表示されるかな?

↑が表示されてるなら『readme.html』を開いて『設置方法』の2か3を試してください


あと『&err』
つつかないのであれば『&errexit』でエラー表示画面になります

デフォルトは使えるというのであれば手を加えた方のどこかに記述ミスがあるのだと思います

ん~sendmail機能はまだ使う予定無いので動作確認はしてないですけど・・・
思いつくのはこれくらいかな?

デフォルトが使えるならJavascriptで未入力チェックをすることもできますよ(^^)↓

参考URL:http://javascript.eweb-design.com/1207_ma.html
    • good
    • 0
この回答へのお礼

leap_dayさんご回答ありがとうございます。

>あと『&err』
>つつかないのであれば『&errexit』でエラー表示画面になります

の部分で教えていただいた通り、「&err」を「&errexit」に直したら無事稼動しました!
私の基本的な知識が無いために気づくことができませんでした。
また、Javascriptでのチェックも参考になりました。

色々と調べて、丁寧に教えていただき本当に感謝しております。
これからもっと勉強していきたいと思います。
ありがとうございました!!

お礼日時:2007/02/15 11:03

>#名前がないときの処理


>if ($FORM{'NAME'} eq "") {
>&err('名前が記入されていません。');
>}
>と入れてみたりしたのですが、

↓に修正してみてはどうでしょう。

#名前がないときの処理
if ($FORM{'NAME'} eq "") {
&errexit("名前が記入されていません。");
}
    • good
    • 0
この回答へのお礼

aikata39さん、ご回答ありがとうございます。

教えていただいた通り、

>#名前がないときの処理
>if ($FORM{'NAME'} eq "") {
>&errexit("名前が記入されていません。");
>}

の記述で無事稼動いたしました。
&errexitを&errと記述していたのが間違いであったようです。
お恥ずかしい限りです。

本当に、ありがとうございました。

お礼日時:2007/02/15 11:12

フォーム内容を次のcgiページに送信してるのですよね?


んで未記入だったらエラーページを表示・・・でいいですか?

if($in{'name'} eq "") { $hit=1; last; }
if(!$hit) { &err("名前が入力されていません"); }

もしくは

if($in{'name'} eq "") { &err("名前が入力されていません"); }

で試してみてください

&err のところは
sub err {
}
でhtml表示できるように作ってますか?
    • good
    • 0
この回答へのお礼

leap_dayさん、さっそくのご解答ありがとうございます!!

教えていただいたように、
>if($in{'name'} eq "") { $hit=1; last; }
>if(!$hit) { &err("名前が入力されていません"); }
>
>もしくは
>
>if($in{'name'} eq "") { &err("名前が入力されていません"); }

を、
# EMAILが正常なメールあどれすかどうか判断する
#
if ($FORM{'EMAIL'} =~ /^[-_\.a-zA-Z0-9]+\@[-_\.a-zA-Z0-9]+$/) {
$mailfrom = $FORM{'EMAIL'};
}
の後に入れてみたのですが、やはりInternal Server Error がでてしまいました。

>&err のところは
>sub err {
>}
>でhtml表示できるように作ってますか?

ということですが、配布されているプログラムそのままで
エラーの時にhtml表示できるようになっていると思うのですが、
何か別に手を加えなくてはいけないですか?

何度も申し訳ありません。宜しくお願いしますm(_ _)m

お礼日時:2007/02/14 10:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!