CGI&Pealを初めてまだ間もないのですが、
sendmailを利用して、申し込みフォームを作成することになりました。
全ての項目を必須入力にしたいのですが、いろんなサンプルを見てやってみてるのですが、うまく行きません。
素人でもわかる設定可能なサンプル若しくは基本的なスクリプトが知りたいです。
また良い参考書があったら教えてください。

ちなみに、HTMLのフォームから作成しています。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

ykcさんと同じですが、ちょっと書き方をかえて



if( !$FORM{from} ){ $error .= "【宛先】"; }
elsif( !$FORM{sub} ){ $error .= "【題名】"; }
elsif( !$FORM{com} ){ $error .= "【本文】"; }
&put_error( $error.'が未記入です。' ) if $error;

なんてのもアリではないかと。
    • good
    • 0

デコードした変数をチェックすればいいのじゃないでしょうか。


ex)
unless($key{'koumoku1'} && $key{'koumoku2'} && $key{'koumoku3'})
{
#入力不備があったときの処理
exit;
}
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qメールフォームの作成(sendmail)

現在cgiでメールフォームを作成しています。
sendmail使用、ファイルのエンコーディングはShift_JIS、改行コードLF

htmlのフォームから情報を入力し、
perlで入力内容の確認、
cgiでメール送信までは実行できました。

他の項目(件名やメールアドレスなど)はメール内容に反映されているのですが、
本文のみ空白となってしまいます。

本文に関わるコードは下記になります。
use CGI;
$cgi = new CGI();
$maintxt = $cgi->param('maintxt');
$cgi->charset('Shift_JIS');
$maintxt = $cgi->escapeHTML($maintxt);
&jcode::convert(\$maintxt,'jis');
print MAIL "Content-Type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "$maintxt\n";

cgiは勉強中なもので、解決方法がお分かりの方がいらっしゃいましたら、
教えていただければ幸いです。

現在cgiでメールフォームを作成しています。
sendmail使用、ファイルのエンコーディングはShift_JIS、改行コードLF

htmlのフォームから情報を入力し、
perlで入力内容の確認、
cgiでメール送信までは実行できました。

他の項目(件名やメールアドレスなど)はメール内容に反映されているのですが、
本文のみ空白となってしまいます。

本文に関わるコードは下記になります。
use CGI;
$cgi = new CGI();
$maintxt = $cgi->param('maintxt');
$cgi->charset('Shift_JIS');
$maintxt = $cgi->escapeHTML($maintxt);
...続きを読む

Aベストアンサー

おそらく、ヘッダーと本文の区切りの空行が出力されていないからでしょう。
「print MAIL "$maintxt\n";」の行の前に「print MAIL "\n";」を追加すればよいかと。


ちなみに、提示されているロジックより前の方で

 open (MAIL, "| sendmailのパスとオプション") ・・・

とやっていると思いますが、デバグ時には一時的に

 open (MAIL, "> デバグ用のファイル") ・・・

の様にしてファイルに出力してやると確認が楽です。

Q携帯対応の、メールフォーム・アンケートフォーム作成ツールありませんか?

こんにちは。

私は、HPビルダーを使ってHPを作ったりするのが趣味です。
簡単なタグなどを入れたり、ちょこっとソースを弄る位の事はする素人です。

私は、無料のレンタルツールやCGIにはいつもお世話になっています。
が!どこを探しても【携帯電話対応のメールフォーム・アンケートフォーム作成ツール】が無いんです(泣)

PC専用では、【めるふぉ君】【フォームズ】【FC2】などイイツールがたくさんあるのですが…。

そこで、上記の様な手軽で使いやすい、携帯対応のメールフォーム作りが出来るサイトがあれば教えて下さい。作成方法はPCからでも携帯からでもOKです。

確かに、ビルダーにもアンケート作成ツールはありますが、出来れば他の物を使いたいので、よろしくお願い致します。

Aベストアンサー

[SecureMail]
http://ssl.kodama.com/
無料のレンタルCGI。SSL対応でPC・携帯対応。

無料CGIスクリプト配布先は
・http://www.chama.ne.jp/のChama Mail
・http://www.xtrec.com/のPetitMailとMailForm+
探せば他にもあるかもしれません。

Qメールフォームで必須項目の仕方

メールフォームで必須項目を入力しないと送信できないようにするにはどうすればいいでしょうか?
現在は以下のとおりに書いてありますが、必須項目に書いてなくても送信できてしまいます。

<form method="post" action="CGI">
<h3>お問い合わせフォーム</h3>
<p>*は必須項目です。</p>
<table>
<tbody>
<tr>
<th>お問い合わせ内容*</th>
<td><textarea name="お問い合わせ内容" class="l" cols="40" rows="12"></textarea></td>
</tr>
<tr>
<th>お名前(漢字)*</th>
<td><input type="text" name="お名前(漢字)" class="m"></td>
</tr>
<tr>
<th>お名前(フリガナ)*</th>
<td><input type="text" name="お名前(フリガナ)" class="m"></td>
</tr>
<tr>
<th>E-Mail*</th>
<td><input type="text" name="E-mail" class="l"></td>
</tr>
<tr>
<th>電話番号(半角)*</th>
<td><input type="text" name="電話番号" class="l"></td>
</tr>
</tbody>
</table>
<input type="submit" value="  送信  " class="button"></form>


また必須項目が未入力のときにエラーメッセージ(「お名前が未入力です。」など)を出したいのですがどのようにすればいいですか?

メールフォームで必須項目を入力しないと送信できないようにするにはどうすればいいでしょうか?
現在は以下のとおりに書いてありますが、必須項目に書いてなくても送信できてしまいます。

<form method="post" action="CGI">
<h3>お問い合わせフォーム</h3>
<p>*は必須項目です。</p>
<table>
<tbody>
<tr>
<th>お問い合わせ内容*</th>
<td><textarea name="お問い合わせ内容" class="l" cols="40" rows="12"></texta...続きを読む

Aベストアンサー

まずjavascriptでチェックします。
すべて一旦送信してエラーを返すより良いと思います。

<script type="text/javascript">
function inchk(f){var ele="";
for(i=0;i<f.elements.length-1;i++){
if(f.elements[i].value=="") ele+=f.elements[i].name+"が未記入です\n";
}
if(ele){alert(ele);return false;}
}
</script>

<form method="post" action="CGI" onsubmit="return inchk(this)">

ただし、ユーザのブラウザが javascript OFF ですとこれは効きませんから、スクリプトでもチェックが必要ですけどね。
スクリプトは受信データを変数に格納しているところでチェックして確認ページにプリントします。
ここで説明するより、いろいろサンプルを見たほうがいいです。

参考URL:http://webmastertool.jp/

まずjavascriptでチェックします。
すべて一旦送信してエラーを返すより良いと思います。

<script type="text/javascript">
function inchk(f){var ele="";
for(i=0;i<f.elements.length-1;i++){
if(f.elements[i].value=="") ele+=f.elements[i].name+"が未記入です\n";
}
if(ele){alert(ele);return false;}
}
</script>

<form method="post" action="CGI" onsubmit="return inchk(this)">

ただし、ユーザのブラウザが javascript OFF ですとこれは効きませんから、スクリプトでもチェックが必要で...続きを読む

Qフォームメールでsendmailの使えない場合の代替え

これからCGIでフォームメールを作成しようとしていますが、アップしようと思っているサーバがsendmailが使えないそうです。
やりたいことは、応募フォームにて氏名、住所などを入力してもらい、送信ボタンを押した後、確認画面を表示させ内容確認、OKボタンでこちらにメール送信されるということをやりたいのですが。
sendmailが使えない場合、どのようにしたらいいのでしょうか。他に方法があるようですが、どなたか教えて下さい。

Aベストアンサー

確かにNiftyのメールフォームは確認画面が出ないかもしれませんね。
sendmailに直接渡していますからね。
途中にCGIをかませるしかないようですね。
CGIを作って、そこで書きこみを受付、確認画面を出して、それから
http://mdec.nifty.com/cgi-bin/ahpmdec.cgi
に渡してやればよいですね。
でも、私は確認画面を嫌いなんですよ。うっとうしいじゃないですか。

やっぱりフリーのメールデコードサービスを使った方が早いみたいですね。
↓ココはどうですか?

参考URL:http://www1.azaq.net/mail/freemail.htm, http://www.acpit.com/~rental1/webmail/webmail.shtml

Qsendmailってフォームメールとどう違うの?

これまで知らなかったのですが下記URL
http://village.infoweb.ne.jp/at-nifty/index.htmlの下にある比較表の項目で「CGI」の欄には≪ただし「sendmail」はご利用頂けません。≫と書かれています。同表の「フォームからのメール送信」とはどう違うのでしょうか?今まで同じものだと思っていました。
ご存知の方教えてください。

Aベストアンサー

こんばんは。

「フォームからの送信」はプロバイダが用意した「メールデコード」というサービス(CGI)を指しているのではないでしょうか。

メール送信に関しては、私達(プロバイダ)が用意したCGIは使ってもいいけれど、自作のメール送信CGIは安全面が怪しいからダメ!ということだと思います。
プロバイダのCGIもsendmailを使っているはずですが、安全面を考慮したスクリプトになっていると思われます。

sendmailとは簡単に言うとサーバーの機能(アプリケーション)の一つで、sendmail=フォームメールではありません。
サーバーのsendmailを使ってWEB上のフォームからメールを送れるようにしたのがフォームメールです。


このカテゴリの人気Q&Aランキング

おすすめ情報