• 締切済み

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"); } ?>

みんなの回答

回答No.2

参考URLに、それっぽい解説ページを見つけました。 ごめんなさい、あんまりわかんないです;;

参考URL:
http://www.gesource.jp/weblog/archives/2007/08/xampp_for_windows_openpne.html
imu_umi
質問者

お礼

いろいろと調べていただいてとても参考になりました。 まだ解決していませんが、 参考URLをゆっくり拝見して調べたいと思います。 ありがとうございました。

回答No.1

【inquiry.php】 38行目: $tagErr = '<p><img src="../common/enterErr.jpg"></p><ul>'.$tagErr.'</ul>; ↓ $tagErr = '<p><img src="../common/enterErr.jpg"></p><ul>'.$tagErr.'</ul>'; 54行目: mb_send_mail($adminMail,$subject,$message,"From:".#adminMail); ↓ mb_send_mail($adminMail,$subject,$message,"From:".$adminMail); 60行目: ?> ↓ } ?> if($FORM["mode"] == "send") { のカッコが閉じられていないようでしたよ。 「Parse error」は文法のエラーですので、ソースの中に 何かくだらないミスがあるということです。

imu_umi
質問者

補足

buddhisticさん、さっそく回答ありがとうございました。 カッコの閉じ忘れが原因だったんですね…。 buddhisticさんのご教授どおり、入力ミス訂正とカッコを入れてみましたところ、 Parse errorが出なくなりました。 しかし、喜びもつかの間、試しに空白のまま送信ボタンを押すと何も表示されず、 必須項目を入力して送信ボタンを押すと次のようなエラーが表示されました。 Warning: mb_send_mail() [function.mb-send-mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Program Files\xampp\htdocs\test\contact\inquiry.php on line 54 Warning: Cannot modify header information - headers already sent by (output started at C:\Program Files\xampp\htdocs\test\contact\inquiry.php:54) in C:\Program Files\xampp\htdocs\test\contact\inquiry.php on line 58 ちなみに、54行目とは mb_send_mail($adminMail,$subject,$message,"From:".$adminMail); 58行目は header("Location:http://localhost/test/contact/sendEnd.html"); です。 エラーをググってみたところ、メールサーバーが必要というような 解説をみつけたのですが、この場合もそれが原因なのでしょうか? ローカルにメールサーバーをたてるという原理がいまいちよくわからないのですが、 どうすればよいのかご存知でしたら、ぜひ教えてください。 何度もすみません。

関連するQ&A