PHPメールフォームのエラー表示方法とは?

このQ&Aのポイント
  • 現在メールフォームの作成にて困っていることがあります。
  • エラーメッセージがまとめて表示されてしまい、項目ごとにエラーメッセージを表示させたいのです。
  • 具体的には、名前の項目とフリガナの項目ごとにテキストボックスの下にエラーメッセージを表示させたいです。
回答を見る
  • ベストアンサー

php メールフォーム エラー表示方法

現在メールフォームの作成にて困っていることがあります。 form.php <?php //エラー表示設定 if(isset($_SESSION['error'])) { foreach ($_SESSION['error'] as $value) { print ' <span style="color:#FF0000; font-size:13px;">' . h($value) . '</span><br />' . "\n"; } } ?> <!--FORMタグここから--> <form method="post" action="confirm.php"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td><label for="name">名前</label><span class="indispensable_color">*</span></td> <td><input type="text" size="50" name="name" id="name" value="<?php print h(@$_SESSION['name']); ?>" /></td> <td>例:goo 太郎</td> </tr> <tr> <td><label for="kana">フリガナ</label><span class="indispensable_color">*</span></td> <td><input type="text" size="50" name="kana" id="kana" value="<?php print h(@$_SESSION['kana']); ?>" /></td> <td>例:グー タロウ</td> </tr> </table> </form> confirm.php // 名前欄をチェックします。 if (trim($name) == '') { $error[] = 'お名前は必須項目です。'; } else if (mb_strlen($name) > 100) { $error[] = 'お名前は100文字以内でお願い致します。'; } // フリガナ欄をチェック if (trim($kana) == '') { $error[] = 'フリガナは必須項目です。'; } // エラー数を確認します。 if(count($error) > 0) { // エラーがある場合は、入力フォームに戻る $dirname = dirname($_SERVER['SCRIPT_NAME']); $dirname = $dirname == DIRECTORY_SEPARATOR ? '' : $dirname; $uri = 'http://' . $_SERVER['SERVER_NAME'] . $dirname . '/form.php'; header('HTTP/1.1 303 See Other'); header('Location: ' . $uri); // 確認画面を表示します。 } else { と記載しています。 これですと、エラーがあった場合の表示はtableの上にまとめて表示されます。 まとめて表示されるのではなく個別に表示されるにはどうしたらよろしいでしょうか? 例→名前の項目のテキストボックスの下に「お名前は必須項目です。」   カナの項目のテキストボックスの下に「カナは必須項目です。」 と表示されるようにしたい。 ご教授お願いします。

  • h-h13
  • お礼率24% (37/149)
  • PHP
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • inoue_kou
  • ベストアンサー率57% (27/47)
回答No.2

では手っ取り早い方法で、form.phpの1ファイルでやります。 <?php session_start(); $error = FALSE; echo "<html><head></head><body>"; // POSTで受信したら if ($_POST['submit'] == '送信') { $name = trim($_POST['name']); $kana = trim($_POST['kana']); $_SESSION['name'] = $name; $_SESSION['kana'] = $kana; // 名前欄をチェックします。 if ($name == '') { $_SESSION['err_name_req'] = 'お名前は必須項目です。'; $error = TRUE; } else { // 問題無ければSESSIONのエラー内容をクリア unset($_SESSION['err_name_req']); } // 名前欄のサイズをチェック if (mb_strlen($name) > 100) { $_SESSION['err_name_len'] = 'お名前は100文字以内でお願い致します。'; $error = TRUE; } else { // 問題無ければSESSION内容のエラーをクリア unset($_SESSION['err_name_len']); } // フリガナ欄をチェック if ($kana == '') { $_SESSION['err_kana_req'] = 'フリガナは必須項目です。'; $error = TRUE; } else { // 問題無ければSESSION内容のエラーをクリア unset($_SESSION['err_kana_req']); } // エラーが無ければ登録などをする。エラーならそのまま処理を続行する。 if ($error == FALSE) { // // 送信内容の表示や登録処理など記述 // echo "<h2>登録が完了しますた。</h2>"; echo "<p><a href='".$_SERVER['PHP_SELF']."'>戻る</a></p>"; // SESSION内容破棄 session_destroy(); // 処理を終了させる。formは表示されない。 exit(); } } // fromを表示する。 // あらかじめエラー時に表示させたい所に、<?php echo $_SESSION['err_kana_req']; ?> などを入れておく。 // 初回アクセス時はSESSION内容が空なので表示されない。 // formのactionは自分自身 ?> <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td><label for="name">名前</label><span class="indispensable_color">*</span></td> <td><input type="text" size="50" name="name" id="name" value="<?php print $_SESSION['name']; ?>" /></td> <td>例:goo 太郎 <span style="color:red;"><?php echo $_SESSION['err_name_req'].$_SESSION['err_name_len']; ?></span></td> </tr> <tr> <td><label for="kana">フリガナ</label><span class="indispensable_color">*</span></td> <td><input type="text" size="50" name="kana" id="kana" value="<?php print $_SESSION['kana']; ?>" /></td> <td>例:グー タロウ <span style="color:red;"><?php echo $_SESSION['err_kana_req']; ?></td> </tr> <tr><td colspan="3"><input type="submit" name="submit" value="送信"></td></tr> </table> </form> </body> </html>

h-h13
質問者

補足

有難う御座います。 できました。 ただ、メールアドレスのチェックとエラー出力方法ですが、 // メールアドレス欄をチェック if (trim($mail) == '') { $_SESSION['err_mail_req'] = 'メールアドレスは必須項目です。'; $error = TRUE; } else { unset($_SESSION['err_mail_req']); } if (!preg_match('/^[a-zA-Z0-9_\.\-]+@[A-Za-z0-9]+\.[A-Za-z0-9]+$/', $mail)) { $_SESSION['err_mail_preg']= 'メールアドレスの形式が正しくありません。'; $error = TRUE; } else { unset($_SESSION['err_mail_preg']); } のように記述しています。 出力するところには <span style="color:red; font-size:13px;"><?php print $_SESSION['err_mail_req'].$_SESSION['err_mail_preg']; ?></span> と記述しています。 ですが、空白で確認ボタンを押すと画像のようになります。 空白で確認ボタンを押すと、必須項目です。 メアドの形式が間違っていたらアドレスの形式が違いますと別々にだしたいのですが、どうしたらよろしいでしょうか? 調べてやってみたのですが、!preg_matchの!をはずしてみるなどためしてみましたが、!をはずすとアドレスの形式はあっているのに形式が違いますとでます。 初心者なものですからご質問ばかりで申し訳ありませんが、宜しくお願いします。

その他の回答 (2)

  • inoue_kou
  • ベストアンサー率57% (27/47)
回答No.3

> 出力するところには > <span style="color:red; font-size:13px;"><?php print $_SESSION['err_mail_req'].$_SESSION['err_mail_preg']; ?></span> > と記述しています。 > > ですが、空白で確認ボタンを押すと画像のようになります。 > > 空白で確認ボタンを押すと、必須項目です。 > メアドの形式が間違っていたらアドレスの形式が違いますと別々にだしたいのですが、どうしたらよろしいでしょうか? > > 調べてやってみたのですが、!preg_matchの!をはずしてみるなどためしてみましたが、!をはずすとアドレスの形式はあっているのに形式が違いますとでます。 えーと、ちょっと質問の意味が分かりませんが メールアドレス欄になにも入れず送信した時に必須項目のエラーが出るのは良いが、 形式のエラーを出したくないということでしょうか? でしたら、必須項目のチェックでOKとなった時だけ形式をチェックすればいいですね。 必須項目チェックのelse文の中でメールアドレス形式をチェックするという事です。 preg_match関数は返り値にマッチした回数を返します。(1回マッチしたら処理が終わるので1(回)か0(回)のどちらかです。) http://www.php.net/manual/ja/function.preg-match.php ですから、if (preg_match('/^[a-zA-Z0-9_\.\-]+@[A-Za-z0-9]+\.[A-Za-z0-9]+$/', $mail) == 0) { がマッチしなかった時になります。 また、PHPは数値型の0をブーリアン型のFALSEと解釈します。 http://www.php.net/manual/ja/language.types.boolean.php また、論理演算子 ! は否定しますので、if (!preg_match は preg_matchがマッチしないなら0だからFALSE → ! がFALSEを否定しますのでTRUE→if文はTRUEで実行されます。 http://www.php.net/manual/ja/language.operators.logical.php あと、公開フォームとなるでしょうからセキュリティには十分注意して下さい。 http://www.php.net/manual/ja/security.variables.php http://gihyo.jp/dev/serial/01/php-security

h-h13
質問者

お礼

ご返信が遅くなり申し訳ありません。 また、参考URLをみながらいろいろとためしたのですが、まったくわからなかったため、諦めます。 いろいろと有難う御座いました。

  • inoue_kou
  • ベストアンサー率57% (27/47)
回答No.1

エラーがあった場合は入力フォームにhtmlヘッダーのLocationで飛ばさずに、 form.phpのエラーがあった場合のhtml出力で各フォームエレメントのそばにエラー内容をそれぞれ書き出す方法があります。 その際は$_SESSION['error']は要らなくなりますね。 ただし静的にhtmlにエラー内容を書いているので表示されたままですが。 他にjavascriptでフォーム内容をチェックしてエラー内容を表示させる。正しく入力されたらエラーを消すという事も出来ます。 jQueryなどのライブラリを使用すれば比較的簡単に出来ます。 たとえば、 「A jQuery inline form validation, because validation is a mess」 http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/ などはクライアントのブラウザ上のjavascriptでの検証とSubmit先のphpにAJAX通信で検証してもらう両方が簡単に出来ます。 デモはこちら、 http://www.position-relative.net/creation/formValidator/ http://www.position-relative.net/creation/formValidator/demoSubmit.html 参考までに

h-h13
質問者

補足

ご回答有難う御座います。 このままの状態で記述し、動作をおこなうのは無理なのでしょうか? 今はjavascriptに興味がなく、知識もないため最低限は避けております。 このphpにて、エラーを出力する記述をご教授いただけないでしょうか? 宜しくお願いします。

関連するQ&A

  • php メールフォーム プルダウンメニュー

    プルダウンメニューを使用して、フォーム→確認→送信と順々に値を受け取りたいのですが、form.phpではプルダウンメニューは表示されますが、form.phpで選択したプルダウンメニューがconfirm.phpでは表示されません。 confirm.phpでも表示されてなおかつ送信をしたら受け取れるようにしたいのです。 初心者なので、いろいろと勉強をしながら、本を読んだり、調べたのですが、まったくわからずです。どなたかご教授お願いします。 form.php <form method="post" action="confirm.php"> <table cellpadding="0" cellspacing="0" border="0"><tr><td>項目</td><td>入力欄</td><td>記入例</td></tr> <tr><td><label for="name">名前</label></td><td><input type="text" size="50" name="name" id="name" value="<?php print h(@$_SESSION['name']); ?>" /></td><td>例:goo 太郎</td></tr> <tr><td><label for="mail">生年月日</label></td><td> <select name="year[]"><option value="1970">1970</option><option value="1971">1971</option><option value="1972">1972</option><option value="1973">1973</option><option value="1974">1974</option></select>年 <select name="month[]"><option value="01">01</option><option value="02">02</option><option value="03">03</option><option value="04">04</option><option value="05">05</option><option value="06">06</option></select>月 <select name="day[]"><option value="01">01</option><option value="02">02</option><option value="03">03</option><option value="04">04</option><option value="05">05</option><option value="06">06</option></select>日 </td><td>例:1990年01月01日</td></tr> <tr><td colspan="3" style="text-align:center;"><input type="hidden" name="aaa" value="<?php print h($aaa); ?>" /><input type="submit" value="確認" /></td></tr> </table></form> confirm.php session_start(); $_POST = checkInput($_POST); if (isset($_POST['aaa']) && isset($_SESSION['aaa'])) { $aaa = $_POST['aaa']; if (!in_array($aaa, $_SESSION['aaa'])) { die('不正アクセスの疑いがあります。'); } } else { die('不正アクセスの疑いがあります。'); } $name = isset($_POST['name']) ? $_POST['name'] : NULL; $kana = isset($_POST['kana']) ? $_POST['kana'] : NULL; $mail = isset($_POST['mail']) ? $_POST['mail'] : NULL; $comment = isset($_POST['comment']) ? $_POST['comment'] : NULL; $error = array(); ★★★各項目のチェック★★★ $_SESSION['name'] = $name; $_SESSION['kana'] = $kana; $_SESSION['mail'] = $mail; $_SESSION['comment'] = $comment; $_SESSION['error'] = $error; <table class="form" cellpadding="0" cellspacing="0" border="0"> <tr><td>項目</td><td>入力欄</td><td class="title_color" style="border-left:1px solid #ffffff;">記入例</td></tr> <tr><td>名前</td><td class="title_back2"><?php print h($name);?></td><td>例:goo 太郎</td></tr> <tr><td>生年月日</td><td>★★★★★ここにform.phpからのプルダウンメニューを受け取りたい★★★★★</td><td>例:1990年01月01日</td></tr> </table> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td><form action="form.php" method="post"><input type="submit" value="戻る" /></form></td> <td><form action="send.php" method="post"><input type="hidden" name="aaa" value="<?php print h($aaa);?>" /><input type="submit" value="送信" /></form></td> </tr></table>

    • ベストアンサー
    • PHP
  • [PHP初心者] フォームのエラーチェック

    PHPやデータベースに全く疎い者です。 皆様にご指導頂きたく投稿致します。質問内容もレベルが低いですがどうが宜しくお願いします。 メールフォームにてフォームのボタンを押下し、 エラーチェックをして、エラー項目を同一画面上の上の辺りに表示させたいのですが、、参考書を読んだり、過去スレを拝見しても、どうもわかりません。 <body> //↓この辺をどう書けばいいのか、さっぱりなんです。 <?php if(isset($_POST['mailform'])) { if($_POST['name'] == "") { echo("名前を入力して下さい。<br>"); }} ?> //↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ <form method="POST" action="kakunin.php"> <table border="0" cellpadding="5"> <tr> <td colspan="2"></td> </tr> <tr> <td>名前</td> <td><input type="text" name="name" size="20"></td> </tr> <tr> <td>メールアドレス</td> <td><input name="mail" type="text" id="mail" size="20"></td> </tr> <tr> <td>項目</td> <td>     <input type="checkbox" name="check[]" value="PHP">PHP <input type="checkbox" name="check[]" value="Perl">Perl <input type="checkbox" name="check[]" value="ASP">ASP <input type="checkbox" name="check[]" value="JSP">JSP</td> </tr> <tr> <td>お問い合わせ内容</td> <td><textarea rows="5" name="naiyou" cols="40"></textarea></td> </tr> <tr> <td colspan="2"><input name="mailform" type="submit" id="mailform" value="::入力内容を確認::">  <input type="reset" name="Submit" value="リセット"></td> </tr> </table> </form> </body>

    • 締切済み
    • PHP
  • phpのフォームでエラーが出ます

    php初心者です。 ↓の参考サイトを参考にフォームを作ってみましたが、 ローカルサーバーでテストしてみると、inquiry.phpの最後の行(?>)に エラーがある旨のメッセージが出てしまい、 原因がわからず困っております。 どなたかおわかりになる方がいらっしゃいましたら、 よろしくお願いします。 【参考サイト】 http://php.frogstone.jp/inquiry/inquiry.php 【プログラムの構造】 index.html(メインプログラム) sendEnd.html(送信完了ページ) inquiry.php 【index.html】 <div id="form_main"> <?php echo($tagErr); ?> <form action="inquiry.php" method="post"> <input name="mode" type="hidden" value="send" /> <div class="hiss"> <p>※印は必須項目です。</p> </div> <table> <tr> <th scope="row">お名前<b class="hiss">※</b></th> <td><input type="text" name="name" value="" class="m" id="name"/></td> </tr> <tr> <th scope="row">会社名</th> <td><input type="text" name="company" value="" class="m" id="company"/></td> </tr> <tr> <th scope="row">お電話番号<b class="hiss">※</b></th> <td><input type="text" name="tel" value="" class="" id="tel"/></td> </tr> <tr> <th scope="row">メールアドレス<b class="hiss">※</b></th> <td><input type="text" name="mail" value="" class="" id="mail"/></td> </tr> <tr> <th scope="row">お問い合わせ内容<b class="hiss">※</b></th> <td><textarea name="naiyo" cols="10" rows="10" class="L" id="naiyo"></textarea></td> </tr> </table> <div class="align_c"><input type="submit" name="submit" value="確認画面へ進む" class="input-b"/></div> </form> </div> 【inquiry.php】 <?php #設定 $adminMail = "test@test.com"; #データの受け取り foreach($_REQUEST as $key => $value) { $value = mb_convert_kana($value,"rkv"); $FORM[$key] = $value; } #フォームから送信された場合 if($FORM["mode"] == "send") { #入力エラーチェック $flgErr = true; $tagErr = ""; if($FORM["name"] == "") { $flgErr = false; $tagErr = "<li>お名前をご記入ください。</li>\n"; } if($FORM["mail"] == "" && $FORM["tel"] == "") { $flgErr = false; $tagErr .= "<li>お電話番号かメールアドレスをご記入ください。</li>\n"; } if($FORM["naiyo"] == "") { $flgErr = false; $tagErr .= "<li>お問い合わせ内容をご記入ください。</li>\n"; } #入力エラーがあれば if(!$flgErr) { #エラーメッセージ設定 $tagErr = '<p><img src="../common/enterErr.jpg"></p><ul>'.$tagErr.'</ul>; #入力エラーがなければ } else { #管理者にメール送信 mb_language("japanese"); $subject ="お問い合わせがありました。"; $message .="お問い合わせ内容。\n\n"; $message .="お名前 :".$FORM["name"]."\n"; $message .="会社名 :".$FORM["company"]."\n"; $message .="電話番号 :".$FORM["tel"]."\n"; $message .="メールアドレス :".$FORM["mail"]."\n"; $message .="お問い合わせ内容\n".$FORM["naiyo"]."\n"; mb_send_mail($adminMail,$subject,$message,"From:".#adminMail); #完了ページへ移動 header("Location:http://localhost/test/contact/sendEnd.html"); } ?>

    • 締切済み
    • PHP
  • phpのエラーについて

    phpでメールフォームを作っています。 メールフォーム(1)、(2)、(3)と3つ作っています。 (2)で確認して記入内容に間違いがなれけば送信して(3)を表示。 間違っていたら(1)に戻るというものです。 確認するページ(2)の記述でParse error: syntax error, unexpected T_STRING in……とエラーが出ます。 その問題の行は、セッションを開始したすぐ下の行の die('不正アクセスの疑いがあります。'); という部分です。 この行と、それより以前・以後を何度も確認しましたがエラーの原因となるものが発見できません…… PHP初心者なのでもうお手上げです>< どなたかご教授よろしくお願いします!!! レンタルサーバーはヘテムルでphpは5.2.8です。 <?php function checkInput($var){ if(is_array($var)){ return array_map('checkInput', $var); } else { if(get_magic_quotes_gpc()){ $var = stripslashes($var); } if(preg_match('/\0/', $var)){ die('不正な入力です。'); } if(!mb_check_encoding($var, 'UTF-8')){ die('不正な入力です。'); } return $var; } } session_start(); $_POST = checkInput($_POST); if(isset($_POST['ticket']) && isset($_SESSION['ticket'])){ $ticket = $_POST['ticket']; if(!in_array($ticket, $_SESSION['ticket'])){ die('不正アクセスの疑いがあります。'); //この行がエラーとなります。 } }else{ die('不正アクセスの疑いがあります。'); } $name = isset($_POST['name']) ? $_POST['name'] : NULL ; $email = isset($_POST['email']) ? $_POST['email'] : NULL ; $name = isset($_POST['comment']) ? $_POST['comment'] : NULL ; $error = array(); if(trim($name) == ''){ $error[] = 'お名前は必須項目です。'; } else if(mb_strlen($name) > 100){ $error[] = 'お名前は100文字以内でお願いします。'; } if(trim($email) == ''){ $error[] = 'メールアドレスは必須項目です。'; } else { $pattern = '/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/iD'; if(!preg_match($pattern, $email)){ $error[] = 'メールアドレスの形式が正しくありません'; } } if(trim($comment) == ''){ $error[] = 'コメントは必須項目です。'; } else if(mb_strlen($comment) > 500){ $error[] = 'コメントは500文字以内でお願いします。'; } $_SESSION['name'] = $name; $_SESSION['email'] = $email; $_SESSION['comment'] = $comment; $_SESSION['error'] = $error; if(count($error) > 0) { $dirname = dirname($_SERVER['SCRIPT_NAME']); $dirname = dirname == DIRECTORY_SEPARATOR ? '' : $dirname; $uri = 'http://' .$_SERVER['SERVER_NAME'] . $dirname . '/○○.php'; header('HTTP/1.1 303 See Other'); header('Location: ' . $uri); } else { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>確認フォーム</title> </head> <body> <div id="form"> <p>以下の内容でよろしければ送信ボタンを押してください。</p> <dl> <dt>お名前:</dt> <dd><?php echo h($name);?></dd> </dl> <dl> <dt>メールアドレス:</dt> <dd><?php echo h($email);?></dd> </dl> <dl> <dt>コメント:</dt> <dd><?php echo nl2br(h($comment));?></dd> </dl> <form action="thank.php" method="post"> <input type="hidden" name="ticket" value="<?php echo h($ticket);?>" /> <input type="submit" name="submit" value="送信する" /> </form> </div> </body> </html> <?php } function h($string) { return htmlspecialchars($string, ENT_QUOTES); } ?>

    • ベストアンサー
    • PHP
  • メールフォームエラー表示について

    お世話になります。 以下のフォーム内容エラー表示のスクリプトはWinIEでは動作するのですが、Firefox、Safariでは動作しません。なぜでしょうか?ご教授下さい。 又、メールアドレスを2つ入力個所を設け、その二つが異なる場合エラーを出したいのですが、どうしたらいいでしょうか? そして、あるチェックボックスにチェックを入れて場合のみ送信ボタンが押すことができるようにするにはどうしたらいいでしょうか? 度重なる質問で申し訳ありません。 何卒宜しくお願い致します。 <html> <head> <script type="text/javascript"> <!-- // メールアドレスチェック function isAddress(address) { if(address.indexOf("@",0)<=0) { return false; } else { return true; } } // submit可能か判定(form1) function jdgSubmit1() { var errItem = ""; // お名前が空の場合 if (document.form1.item('name1').value == null || document.form1.item('name1').value == "") { errItem = errItem + "お名前を入力して下さい。<br />"; document.form1.item('name1').style.backgroundColor = "#BBBBBB"; } else { document.form1.item('name1').style.backgroundColor = "#ffffff"; } // ふりがなが空の場合 if (document.form1.item('name2').value == null || document.form1.item('name2').value == "") { errItem = errItem + "ふりがなを入力して下さい。<br />"; document.form1.item('name2').style.backgroundColor = "#BBBBBB"; } else { document.form1.item('name2').style.backgroundColor = "#ffffff"; } // E-mailが空の場合 if (document.form1.item('eaddress').value == null || document.form1.item('eaddress').value == "") { errItem = errItem + "メールアドレスを入力して下さい。<br />"; document.form1.item('eaddress').style.backgroundColor = "#BBBBBB"; } else { if (!isAddress(document.form1.item('eaddress').value)) { errItem = errItem + "正しいメールアドレスを入力して下さい。<br />"; document.form1.item('eaddress').style.backgroundColor = "#BBBBBB"; } else { document.form1.item('eaddress').style.backgroundColor = "#ffffff"; } } // 本文が空の場合 if (document.form1.item('content').value == null || document.form1.item('content').value == "") { errItem = errItem + "お問い合わせ内容を入力して下さい。<br />"; document.form1.item('content').style.backgroundColor = "#BBBBBB"; } else { document.form1.item('content').style.backgroundColor = "#ffffff"; } // エラーがあるか確認 if (errItem != "") { err.innerHTML = errItem; return false; } document.form1.submit(); } --> </script> </head> <body> <form name="form" action="mail-send.php" method="POST"> <div id="err"></div> <div> <table cellspacing="0" cellpadding="0"> <tr> <td>お名前</td> <td><input type="text" name="name1" size="30" maxlength="100" /></td> </tr> <tr> <td>ふりがな</td> <td><input type="text" name="name2" size="30" maxlength="100" /></td> </tr> <tr> <td>E-mail</td> <td><input type="text" name="eaddress" size="30" maxlength="100" /></td> </tr> <tr> <td>本文</td> <td><textarea name="content" rows="6" /></textarea></td> </tr> </table> </div> <input type="submit" value="送信" name="submit" id="submit" onClick="jdgSubmit1();return false" /> </form> </body> </html>

  • このメールフォームが機能しないのは何故ですか?

    お世話になります。メールフォームを作成してCGIプログラムでメールを送信できるようにしたいと思い、以下のようにhtmlを作成しました。CGIはSYNCK GRAPHICAさんのサイトでお借りして自動返信機能付メールフォームCGIというCGIを使わせてもらいました。?http://www.synck.com/contents/download/cgi-perl/mailform.html レンタルしているサーバはロリポップです。?http://www.lolipop.jp/?mode=manual&state=hp&state2=cgi? CGIでロリポップが指定しているPERLパス・SENDMAILパスを変更してパーミッションも700に設定したのですが、何故かエラーの表示が出て、うまく作動してくれません。郵便番号自動検索機能も正常に機能しません。それでSYNCK GRAPHICAさんにどうして?と聞いたのですが、「http://www.自分のサイトアドレス/mailform.js←ここにファイルが無いためと考えられます。」という返事のみで、「何のファイルがないの?」って感じで全く分かりませんでした。初心者ゆえどこか基本的なことを見落としていると思います、どうか教えてください。 <table> <tr> <td>メールアドレス<span>*</span><p class="form">e-mail address</p></td> <td class="kakikomi"><input type="text" name="email(必須)" style="width: 300px;ime-mode: disabled;" onBlur="keepField(this.form.id)"></td> </tr> <tr> <td>確認用メールアドレス<span>*</span><p class="form">e-mail address</p></td> <td class="kakikomi"><input type="text" name="confirm_email" style="width: 300px;ime-mode: disabled;" onBlur="keepField(this.form.id)"></td> </tr> <tr> <td>お名前<span>*</span><p class="form">your name</p></td> <td class="kakikomi"><input type="text" name="お名前(必須)" style="width: 300px;ime-mode: active;" onBlur="keepField(this.form.id)"></td> </tr> <tr> <td>性別<p class="form">sex</p></td> <td class="kakikomi"><input type="radio" name="性別" value="男" onBlur="keepField(this.form.id)">男 <input type="radio" name="性別" value="女" onBlur="keepField(this.form.id)">女</td> </tr> <tr> <td>電話番号 <p class="form">telephone number</p> </td> <td class="kakikomi"><input type="text" name="電話番号" style="width: 120px;ime-mode: disabled;" onBlur="keepField(this.form.id)"></td> </tr> <tr> <td>郵便番号<p class="form">postcode</p></td> <td class="kakikomi"><input type="text" name="郵便番号" style="width: 60px;ime-mode: disabled;" onBlur="keepField(this.form.id)"> <input type="button" value="〒から住所を自動入力" name="postcode" onClick="javascript:checkPostcode('mailform','郵便番号','住所(必須)');"></td> </tr> <tr> <td>住所<span>*</span><p class="form">address</p></td> <td class="kakikomi"><input type="text" name="住所(必須)" style="width: 300px;ime-mode: active;" onBlur="keepField(this.form.id)"></td> </tr> <tr> <td>ご用件<span>*</span><p class="form">inquiry subject</p></td> <td class="kakikomi"><select name="ご用件(必須)" id="business" onBlur="keepField(this.form.id)"> <option value="" selected>下記の中から必ず選択して下さい</option> <option value="デザイン・印刷のお見積り">デザイン・印刷のお見積り</option> <option value="その他お問い合わせ">その他お問い合わせ</option> </select> </td> </tr> <tr> <td>ご用件<span>*</span><p class="form">inquiry body</p></td> <td class="kakikomi"><textarea name="ご用件(必須)" style="width: 300px;height: 140px;ime-mode: active;" onBlur="keepField(this.form.id)" rows="15" cols="30"></textarea></td> </tr> <tr> <td>送信確認<p class="form">sending confirm</p></td> <td class="kakikomi"><input type="checkbox" name="送信確認(必須)" value="送信チェック済み" onClick="keepField(this.form.id)">上記内容を確認したらチェックを入れてください</td> </tr> <tr> <td></td> <td class="kakikomi"><input type="submit" value="メールを送信する"> <input type="reset" name="reset" value="リセット"><br></td> </tr> <tr> <td></td> <td class="kakikomi"><span>*</span>は必須項目です。</td> </tr> </table> </form>

    • ベストアンサー
    • CGI
  • 予約フォームのPHPの書き方について

    はじめまして。PHP初心者です。個人事業のHPを作成しており、予約システムを導入する為、MTS Simple Bookin C Ver.1.4.0 をインストールし、予約に必要な項目をhttps://www.nishi2002.com/3502.htmlやhttp://www.amagistudio.com/reservedemonstration/を参考に作成中です。 必要項目の plan groom_name groom_frigana groom_age bride_name bride_frigana bride_age arrival_date departure_date hotel を手順通りに追加し、予約フォームの入力まはで出たのですが、入力の確認が出てきません、、、 何が原因かご教授頂けましたら幸いです。 【 mtssb-booking-form.phpの編集】 737行辺りから <?php if (0 < $this->clcols['plan']) : ?><tr>    <th><?php echo apply_filters('booking_form_plan', 'プラン') ?></th> <td>        <?php echo esc_html($client['plan']) ?> <input type="hidden" name="booking[client][plan]" value="<?php echo esc_html($client['plan']) ?>" /> </td> </tr><?php endif; ?> <tr> <th>予約人数</th> <td> <?php foreach ($this->controls['count'] as $key => $val) : ?><div class="input-number"<?php echo $val != 1 ? ' style="display:none"' : '' ?>><?php $title = apply_filters('booking_form_count_label', __(ucwords($key), $this->domain)); if ($title != '') { echo "$title<br />"; } ?> <?php echo esc_html($client[$key]) ?><input type="hidden" name="booking[client][<?php echo $key ?>]" value="<?php echo esc_html($client[$key]) ?>" maxlength="5" /><?php echo apply_filters('booking_form_count_note', '') ?> </div><?php endforeach; ?> <?php if (isset($this->errmsg['count'])) : ?><div class="error-message"><?php echo $this->errmsg['count'] ?></div><?php endif; ?> </td> </tr> <tr> <td class="option-confirm-header" colspan="2"><?php echo apply_filters('booking_form_client_title', 'ご連絡先') ?></td> </tr> <?php if (0 < $this->clcols['company']) : ?><tr> <th><?php echo apply_filters('booking_form_company', '会社名') ?></th> <td> <?php echo esc_html($client['company']) ?> <input type="hidden" name="booking[client][company]" value="<?php echo esc_html($client['company']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['groom_name']) : ?><tr> <th><?php echo apply_filters('booking_form_groom_name', 'ご新郎様のお名前') ?></th> <td> <?php echo esc_html($client['groom_name']) ?> <input type="hidden" name="booking[client][groom_name]" value="<?php echo esc_html($client['groom_name']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['groom_furigana']) : ?><tr> <th><?php echo apply_filters('booking_form_groom_furigana', 'フリガナ') ?></th> <td> <?php echo esc_html($client['groom_furigana']) ?> <input type="hidden" name="booking[client][groom_furigana]" value="<?php echo esc_html($client['groom_furigana']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['groom_age']) : ?><tr> <th><?php echo apply_filters('booking_form_groom_age', '年齢') ?></th> <td> <?php echo esc_html($client['groom_age']) ?> <input type="hidden" name="booking[client][groom_age]" value="<?php echo esc_html($client['groom_age']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['bride_name']) : ?><tr> <th><?php echo apply_filters('booking_form_bride_name', 'ご新婦様のお名前') ?></th> <td> <?php echo esc_html($client['bride_name']) ?> <input type="hidden" name="booking[client][bride_name]" value="<?php echo esc_html($client['bride_name']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['bride_furigana']) : ?><tr> <th><?php echo apply_filters('booking_form_bride_furigana', 'フリガナ') ?></th> <td> <?php echo esc_html($client['bride_furigana']) ?> <input type="hidden" name="booking[client][bride_furigana]" value="<?php echo esc_html($client['bride_furigana']) ?>" /> </td> </tr><?php endif; ?> <?php if (0 < $this->clcols['bride_age']) : ?><tr> <th><?php echo apply_filters('booking_form_groom_age', '年齢') ?></th> <td> <?php echo esc_html($client['bride_age']) ?> <input type="hidden" name="booking[client][bride_age]" value="<?php echo esc_html($client['bride_age']) ?>" /> </td> </tr><?php endif; ?> 続き→ https://okwave.jp/qa/q9532258.htm

    • 締切済み
    • PHP
  • javascriptを使用したメール送信の処理方法

    本を参考に独学で問合せフォームを作成しています。(初心者です) 未入力項目が0の時は送信ボタンを押すと(phpに)送信できるようにしたいのですが、javascriptにどのようなコードを入れればよいのでしょうか。 下記は本に記載されているコードなのですが、下記だけだと送信することが出来ません。 ご教示お願いします。 【js】の下記の部分にコードを入れればいいのかと思うのですが、どういうコードをどのように入れればいいのかわかりません。 //エラーカウントが0であれば、エラー無し if( errorCount == 0 ){ alert( '送信内容にエラーはありません。' ); }; また、下記のHTMLの最初の行の<form id="myForm" method="post" >にaction="info.php"を入れてみましたが、info.phpに飛ばないのですがどうしてなのでしょうか? 【HTML】 <form id="myForm" method="post" > <table> <tr> <th><label for="formName">名前 <span class="ind">必須</span></label></th> <td><input type="text" name="formName" id="formName"></td> </tr> <tr> <th><label for="formFurigana">ふりがな <span class="ind">必須</span></label></th> <td><input type="text" name="formFurigana" id="formFurigana"></td> </tr> <tr> <th><label for="formTell">電話番号 <span class="ind">必須</span></label></th> <td><input type="text" name="formTell" id="formTell"></td> </tr> <tr> <th><label for="formMail">メールアドレス <span class="ind">必須</span></label></th> <td><input type="text" name="formMail" id="formMail"></td> </tr> <tr> <th><label for="formInquiry">お問い合わせ内容 <span class="ind">必須</span></label></th> <td><textarea rows="9" name="formInquiry" id="formInquiry"></textarea></td> </tr> </table> <p><input type="submit" value="送信内容を確認する"></p> </form> </div> 【jsのコード】 $(function(){ function setMyForm(target){ var ERROR_MESSAGE_CLASSNAME = 'errorMsg'; //エラー時のメッセージ要素のclass名 var ERROR_INPUT_CLASSNAME = 'errorInput'; //エラー時のinput要素のclass名 var items = []; //チェック対象となるテキスト入力要素を格納した配列 //項目チェックする var checkAll = function(){ var errorCount = 0; //項目:名前のチェック checkEmptyText( items[0], '名前をご入力ください。' ); //項目:ふりがなのチェック checkEmptyText( items[1], 'ふりがなをご入力ください。' ); //項目:電話番号のチェック checkEmptyText( items[2], '電話番号をご入力ください。' ); //項目:メールアドレスのチェック checkEmptyText( items[3], 'メールアドレスをご入力ください。' ); //項目:お問い合わせ内容のチェック checkEmptyText( items[4], 'お問い合わせ内容をご入力ください。' ); //input,textareaのチェック for( var i=0; i<items.length; i++ ){ if( items[i].prop('isSuccess') == false ){ errorCount++; }; }; //エラーカウントが0であれば、エラー無し if( errorCount == 0 ){ alert( '送信内容にエラーはありません。' ); }; }; //エラーメッセージの追加 var addErrorMessage = function(selector, msg){ removeErrorMessage(selector); selector.before('<span class="'+ERROR_MESSAGE_CLASSNAME+'">'+msg+'</span>'); selector.addClass(ERROR_INPUT_CLASSNAME); }; //エラーメッセージの削除 var removeErrorMessage = function(selector){ var msgSelector = selector.parent().find('.'+ERROR_MESSAGE_CLASSNAME); if( msgSelector.length != 0 ){ msgSelector.remove(); selector.removeClass(ERROR_INPUT_CLASSNAME); }; }; //input,textareaの未入力チェック var checkEmptyText = function(selector, msg){ if( selector.val() == '' ){ addErrorMessage(selector, msg); selector.prop('isSuccess', false); }else{ removeErrorMessage(selector); selector.prop('isSuccess', true); }; }; //初期設定 var init = function(){ //submitイベントの設定 target.on({ 'submit': function(){ checkAll(); return false; } }); //input要素を配列に格納 items = [ target.find('input[name=formName]'), target.find('input[name=formFurigana]'), target.find('input[name=formTell]'), target.find('input[name=formMail]'), target.find('textarea[name=formInquiry]') ]; //input要素のプロパティを設定 $.each(items, function(index){ items[index].prop('isSuccess', false); }); //enterキーでsubmitしてしまうのを防止する target.find('input[type=text]').on({ 'keypress': function(e){ if( (e.keyCode == 13) ) return false; } }); }; init(); }; setMyForm($('#myForm')); });

  • メールフォームでの必須入力チェックについて

    はじめまして。PHP初心者です。PHPを使ってメールフォームを作成しています。入力画面で必須項目が記入されていなかったらエラー画面に飛ぶようにしたいのですが、なかなかうまくいきません。下のソースはサンプルを参考につくりました。 //入力画面 <?php if(isset($_POST['submit'])){ session_start(); $errflg = '1';   /*必須項目*/   if(($_POST['name']) == ""){     $_SESSION['name1'] = "・お名前";     $_SESSION['name1'] = $_POST['name1'];     $errflg = '0';   }else{     $_SESSION['name']="";   }       if($errflg == '0'){         header('Location: error.php');       exit();} ?> 流れとしては、名前の欄が入力されていなかったら、エラー画面に飛ばして「・お名前」と表示させたいです。もし他にいい方法やソースがありましたら教えてください。お願いします。

    • ベストアンサー
    • PHP
  • <?php

    <?php session_start(); $_SESSION['name'] = $_POST['name']; $_SESSION['kana'] = $_POST['kana']; $_SESSION['nick'] = $_POST['nick']; $_SESSION['sex'] = $_POST['sex']; $_SESSION['pass'] = $_POST['pass']; $_SESSION['pass2'] = $_POST['pass2']; $_SESSION['mail'] = $_POST['mail']; if(empty($_SESSION['name'])) { $_SESSION['error'] = '名前を入力して下さい'; } if(empty($_SESSION['kana'])) { $_SESSION['error'] = 'フリガナを入力して下さい'; } if(empty($_SESSION['pass'])) { $_SESSION['error'] = 'パスワードを入力して下さい'; } if(empty($_SESSION['pass2'])) { $_SESSION['error'] = '確認用パスワードを入力して下さい'; } if($_SESSION['pass'] and $_SESSION['pass2'] and ($_SESSION['pass'] != $_SESSION['pass2'])){ $_SESSION['error'] = 'パスワードが一致しません'; } if (preg_match("/^[a-zA-Z0-9]{4,12}$/", $_SESSION["pass"])){ $_SESSION['error'] = 'パスワードは半角英数字で入力して下さい'; } if(isset($_SESSION["error"])) { header("Location: regist.php"); exit; } else { header("Location: index.php"); exit; } ?> で、PCからみるとエラーメッセージがでるのですが、自分の携帯(ドコモ)でみるとエラーメッセージが表示されていません・・・ なぜでしょうか?><; フォーム画面のソースは <?php if (isset($_SESSION["error"])) { echo $_SESSION["error"]; session_destroy(); } ?> </font> <font size="2"> <form action="error_check.php" name="form" method="post"> //ここからフォーム内容 です。 ご教授のほど宜しくお願い致します><;;;;;;; 補足 >GETで、セッション名に、session_id()で取得した値を渡してやる必要があります。 それはいったいどうやるんですか?><; 簡単でいいのでソースとか記述してくださればわかりやすいです><; お願い致します><;

    • 締切済み
    • PHP

専門家に質問してみよう