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ノートパソコン本体のキーボード入力がおかしい。

日立 FLORA 270W PC8NB2を貰ったのですが、キーボードの配列がおかしかったり、入力できなくなったりします。マウスは普通に動くし、キーボードを外付けでつないでもちゃんと入力できます。ノート本体のキーボードのみおかしいのです。
これは故障なのでしょうか?

Aベストアンサー

こちらをお試し下さい
http://121ware.com/qasearch/1007/app/nec.jsp?003474

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キーボード入力がおかしい

キーボード入力の際、vを押すとvb nを押すとnm のように
隣のキーが一緒に入力されてしまいます。
他、スペースキーがエンターの役割をしていたりと非常に困っています。

確認したこと・試したこと

キー入力は日本語になっている。
他のキーボードを接続し、試してみても同じ症状。
OSを新規でインストールをしてもなおらない。

他のキーボードで試してみて同じ症状だったので、キーボードの故障は
考えにくいのかなと感じていますが、何か原因になりうる可能性がある
ことはあるのでしょうか?

Aベストアンサー

こんにちは。

・他のキーボードも同じ
・OSを新規でインストールしても治らない

という事であれば、マザーボードが原因ではないでしょうか?
USBキーボードで試して、正常に入力できるようならば、
PS/2ポートの異常かと思います。

それか、OSのCDからブートして回復コンソールでの入力に
異常がなければ、マザーボードではないと思うので、
もしくはキーボードドライバが原因・・・?
他のキーボードドライバを試してみてください。

ここまでやって無理なら、私は修理に出します。
保証期間内であれば、購入店やメーカーで対処してもらった方がいいと思います。

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キーボード入力がおかしい。

WinXPの自作PCを使用していますが、ここ数日、表題のとおりキーボード入力が
おかしくなる事があります。再起動すれば治るのですが、原因を知りたくて投稿しました。

症状:半角アルファベットならば正確に入力できるのだが、ローマ字入力で入力すると、
母音の入力がおかしくなっています。(例)「a」が「b」で、「I」が「C」で入力されます。 したがって、
「ちゃ」と入力する時に、「T」「Y」「A」の順で打ち込むが、画面上では「T」「Y」「B」となって
しまいます。今まで経験した事のない症状なので、教えていただけますでしょうか。

OSはXP(SP3)、ATOK2009を使用しています。キーボードは汎用の物を使っており、
再起動すると治る事からキーボード不良ではないと考えます。仕様で追加情報が必要であれば
補足欄に追加していきます。

Aベストアンサー

補足の返事です

英語のキーボードを削除して再起動後も出てくるなら
手動で設定を変更する必要があるです。

又はレジストリーの書き換え


ま、手動の方が安全なんで一応説明です。。

1 デバイスからキーボードを選んでドライバーの更新
2 検索画面は[今回は接続しません]にチェック入れて次へ
3 一覧または特定の場所からインストールにチェックを入れて次へ
4 検索しないでインストールするドライバーを選択にチェックを入れ次へ
5 互換性のあるハードウェアーの表示(だったけ?)のチェックを外す
6 画面左で標準キーボードを選択
7 画面右側で日本語PS2/キーボード(106/109キーCtr+英数)を選択
8 警告が出るので(ふざけるな!)と言って無視して[はい]を押す(一応治るようにとお祈りしておく)
9 ドライバーのインストールが開始され終了後[完了]をクリックしておしまい
10 再起動の要求が出るのでプログラムを終了して再起動
11 再起動後デバイスマネージャーを確認する(日本語#$%&%$#であればOK)
12以上で復帰できない場合はスクリーンキーボードでは正常か確認し正常ならキーボードの故障もあり得ます
13 USB接続なら違うポートで拾ってみる事も必要です、

14 自作PCだからこんなこと書いても無駄そうですね、この位わかっとるって言われそうです)


長くてすいませんが通常はこれで治ると思う、

補足の返事です

英語のキーボードを削除して再起動後も出てくるなら
手動で設定を変更する必要があるです。

又はレジストリーの書き換え


ま、手動の方が安全なんで一応説明です。。

1 デバイスからキーボードを選んでドライバーの更新
2 検索画面は[今回は接続しません]にチェック入れて次へ
3 一覧または特定の場所からインストールにチェックを入れて次へ
4 検索しないでインストールするドライバーを選択にチェックを入れ次へ
5 互換性のあるハードウェアーの表示(だったけ?)のチェックを外...続きを読む

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 ですとこれは効きませんから、スクリプトでもチェックが必要で...続きを読む

QMacのキーボード入力がおかしいのですが、

マッキントッシュの環境で、
これまでは正常だったキーボードの入力が座席移動のため、コードを抜き差しした後おかしくなってしまいました。全ての入力ではないのですが、

以前(正常時)   現在(おかしい)
・半角/全角幹事キー → ‘ 
・&         → ^
・‘         → &
・(         → *
・)         →(
・*         → ”   

等、他の記号もずれています。
ちなみにOSは 8.6です修正のしかたが
判るかた教えて下さい。

Aベストアンサー

>G3ブルーホワイトで使用してました、
>APPLE USB KEYBOARD - JISを使用していました、
これが問題だったようです、
>APPLE PRO KEYBOARD - JIS(G4 1250mhz用)に変えたらできました。

なるほど。機種がわからなかったので何でしたが最近の機種はそれに付属しているキーボードより古いものはご認識されるんですがそれが原因だったんですね。

試しにうちのマックの1.25G DUALに以前のマックのキーボードを指したらやはりどんなことをしてもご認識しました。

同じ機種同士での移動と勘違いしていたのが早合点でしたね

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

QIEとOEの時のキーボード入力がおかしい

こんにちは、キーボード入力がおかしいので質問させてください。Internet ExpolorerとOutlook Expressの時だけキーボードの入力が変なのです。@をおすと [ と表示されます。英語の101キーボードになっているようです。しかし、他のソフトではWordやメモ帳等は正常に入力できるのです。デバイスマネジャーも日本語106/109になっています。
過去ログを見ましたが、IEだけとというのは見つけられませんでした。どなたか お助けください。

Aベストアンサー

これでもいいかも、
スタート→「ファイル名を指定して実行」をクリック
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\00000411" /v "Layout File" /d "KBDJPN.DLL" /t REG_SZ /f
(一行です。コピペしてね)
と入力して「OK」をクリック

その後、Windowsを再起動させます。

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ランキング