質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1238閲覧

php メールフォーム実装 条件分岐の行でエラーが出ます。

ema-material

総合スコア29

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/03/29 04:26

表題の通りでして、現在メールフォームを実装しています。
エラー画面&確認画面は単独では成功しています。
条件分岐「確認及び送信」の行でつまづいてしまいました。モードの振り分けです。

Notice: Undefined index: mode in /Applications/XAMPP/xamppfiles/htdocs/fujisawa_international_university/contact/form/form_fujisawa.php on line 45

Notice: Undefined index: mode in /Applications/XAMPP/xamppfiles/htdocs/fujisawa_international_university/contact/form/form_fujisawa.php on line 46

下記の記述が上記エラーメッセージ45行・46行目の記述です。

if ($_POST["mode"] == "post"){ conf_form();} else if ($_POST["mode"] == "send"){ send_form();}

アドバイスいただけますと助かります。どうぞよろしくお願いします。
現在の環境は上記の通りXAMPPです。

##html側 index.html

html

1 <form method="post" action="form_fujisawa.php"> 2<!--1資料を選ぶチェックボックス--> 3 <dl class="form-area"> 4 <dt class="item01">希望する資料<span class="cap01">※複数回答可</span></dt> 5 <dd class="documentSelect"> 6 <label> 7 <input type="checkbox" name="document[]" class="checkbox-input" value="大学案内パンフレット"> 8 <span class="checkbox-parts">大学案内パンフレット<a class="pdf" href="#">(pdf版はこちら)</a></span> 9 </label> 10 <label> 11 <input type="checkbox" name="document[]" class="checkbox-input" value="大学募集要項"> 12 <span class="checkbox-parts">大学募集要項</span> 13 </label> 14 <label> 15 <input type="checkbox" name="document[]" class="checkbox-input" value="産業・地域連携成果報告"> 16 <span class="checkbox-parts">産業・地域連携成果報告</span> 17 </label> 18</dd> 19<!--1資料を選ぶチェックボックス--> 20 21<!--2名前記入欄--> 22 <dt class="item02"><label for="nameInput">お名前</label></dt> 23 <dd class="caitionDesign01">必須</dd> 24 <dd class="name"><input id="nameInput" type="text" name="name" placeholder="大学花子" oncopy="return false" onpaste="return false"></dd> 25<!--2名前記入欄--> 26 27<!--3郵便番号入力欄(7桁以上) --> 28 <dt class="item03"><label for="zipInput">郵便番号</label></dt> 29 <dd class="caitionDesign02">必須</dd> 30<dd class="zip"> 31 32 <input type="text" name="zip" maxlength="9" id="zipInput" placeholder="1000000" pattern="\d*" oncopy="return false" onpaste="return false" style="ime-mode:disabled"></dd> 33 <dd class="cap04">※ハイフン(-)は入力しないで下さい。</dd> 34 35<!-- 3郵便番号入力フィールド(7桁以上) --> 36 37<!-- 4住所入力欄(都道府県+以降の住所) --> 38 <dt class="item04"><label for="addInput">住所</label></dt> 39 <dd class="caitionDesign03">必須</dd> 40 <dd class="add"> 41 <input id="addInput" type="text" name="add" placeholder="東京都渋谷区渋谷1-1-1" oncopy="return false" onpaste="return false"></dd> 42<!-- 4住所入力欄(都道府県+以降の住所) --> 43 44<!-- 5電話番号記入欄--> 45 <dt class="item05"><label for="phoneInput">電話番号</label></dt> 46 <dd class="caitionDesign04">必須</dd> 47 <dd class="phoneNo"> 48 <input id="phoneInput" type="tel" name="tel" placeholder="0800000000" pattern="\d*" oncopy="return false" onpaste="return false" style="ime-mode:disabled"></dd> 49 <dd class="cap02">※ハイフン(-)は入力しないで下さい。</dd> 50 51 52<!-- 5電話番号記入欄--> 53 54<!-- 6メールアドレス記入欄 --> 55 <dt class="item06"><label for="mailInput">メールアドレス</label></dt> 56 <dd class="caitionDesign05">必須</dd> 57 <dd class="mailAdd"> 58 <input id="mailInput" type="email" name="email" placeholder="shiryou@daigaku.com" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+.[a-z]{2,4}$" oncopy="return false" onpaste="return false" style="ime-mode:disabled"></dd> 59 <dd class="cap03">※半角英数記号のみ</dd> 60<!-- 6メールアドレス記入欄 --> 61 62 <!-- 7お問い合わせ内容記入欄 --> 63 <dt class="item07"><label for="inquiry">お問い合わせ内容</label></dt> 64 <dd class="caitionDesign06">任意</dd> 65 <dd class="inquiryText"> 66 <textarea id="inquiry" name="inquiry"></textarea></dd> 67 <!-- 7お問い合わせ内容記入欄 --> 68 </dl> 69 <!-- 8送信ボタン --> 70 <button type="submit" class="btn11"><span>送信する</span></button> 71<!-- 8送信ボタン --> 72 73</form>

##php側 form_fujisawa.php

<?php #入力情報の受け取りと加工 $document = implode(' ',$_POST["document"]); $name = $_POST["name"]; $zip = $_POST["zip"]; $add = $_POST["add"]; $tel = $_POST["tel"]; $email = $_POST["email"]; $inquiry = $_POST["inquiry"]; #無効化 $name = htmlentities($name,ENT_QUOTES, "UTF-8"); $zip = htmlentities($zip,ENT_QUOTES, "UTF-8"); $add = htmlentities($add,ENT_QUOTES, "UTF-8"); $tel = htmlentities($tel,ENT_QUOTES, "UTF-8"); $email = htmlentities($email,ENT_QUOTES, "UTF-8"); $inquiry = htmlentities($inquiry,ENT_QUOTES, "UTF-8"); #改行処理 $name = str_replace("\r\n","", $name); $zip = str_replace("\r\n","", $zip); $add = str_replace("\r\n","", $add); $tel = str_replace("\r\n","", $tel); $email = str_replace("\r\n","", $email); $inquiry = str_replace("\r\n","\t", $inquiry); $inquiry = str_replace("\r","\t", $inquiry); $inquiry = str_replace("\n","\t", $inquiry); #入力チェック if ($document == ""){ error("チェックボックスが未選択です。一つ以上選択してください");} if ($name == ""){ error("お名前が未入力です");} if ($zip == ""){ error("郵便番号が未入力です");} if ($add == ""){ error("住所が未入力です");} if ($tel == ""){ error("電話番号が未入力です");} if (!preg_match("/\w+@\w+/",$email)){ error("メールアドレスが未入力であるか、不正です");} #分岐チェック if ($_POST["mode"] == "post"){ conf_form();} else if ($_POST["mode"] == "send"){ send_form();} #conf_form(); #確認画面 function conf_form(){ global $document; global $name; global $zip; global $add; global $tel; global $email; global $inquiry; #テンプレート読み込み $conf = fopen("tmpl/verification.tmpl","r") or die; $size = filesize("tmpl/verification.tmpl"); $data = fread($conf, $size); fclose($conf); #文字置き換え $data = str_replace("!document!", $document, $data); $data = str_replace("!name!", $name, $data); $data = str_replace("!zip!", $zip, $data); $data = str_replace("!add!", $add, $data); $data = str_replace("!tel!", $tel, $data); $data = str_replace("!email!", $email, $data); $data = str_replace("!inquiry!", $inquiry, $data); #表示 echo $data; exit; } #エラー画面 function error($msg){ $error = fopen("tmpl/error.tmpl","r"); $size = filesize("tmpl/error.tmpl"); $data = fread($error , $size); fclose($error); #文字置き換え $data = str_replace("!error!", $msg, $data); #表示 echo $data; exit; } #CSV書き込み function send_form(){ global $document; global $name; global $zip; global $add; global $tel; global $email; global $inquiry; $user_input = array($document,$name,$zip,$add,$tel,$email,$inquiry); mb_convert_variables("SJIS","UTF-8",$user_input); $fh =fopen("user.csv","a"); flock($fh,LOCK_EX); fputcsv($fh, $user_input); flock($fh,LOCK_UN); fclose($fh); #メール送信 #send_mail(); #テンプレート読み込み $conf = fopen("tmpl/done.tmpl","r") or die; $size = filesize("tmpl/done.tmpl"); $date = fread($conf, $size); fclose($conf); #文字置き換え global $topage; $date = str_replace("!top!",$toppage, $date); #表示 echo $date; exit; }

#テンプレートファイル 確認画面tmpl/verification.tmpl

html

1 <dl class="verification-wrapper"> 2 3 <dt class="dtText">希望する資料</dt> 4 <dd class="ddText">!document!</dd> 5 6 7 <dt class="dtText">名前</dt> 8 <dd class="ddText">!name!</dd> 9 10 <dt class="dtText">郵便番号</dt> 11 <dd class="ddText">!zip!</dd> 12 13 <dt class="dtText">住所</dt> 14 <dd class="ddText">!add!</dd> 15 16 <dt class="dtText">電話番号</dt> 17 <dd class="ddText">!tel!</dd> 18 19 <dt class="dtText">E-mail</dt> 20 <dd class="ddText">!email!</dd> 21 22 <dt class="dtText">お問い合わせ内容</dt> 23 <dd class="ddText">!inquiry!</dd> 24 25 26</dl> 27 <ul class="verificationAfterBtn"> 28 <li> 29<a href="javascript:history.back();" class="btn05"><span>内容を修正する</span></a> 30 31 32<form action="form_fujisawa.php" method="post"> 33<button type="submit" class="btn06"><span>送信する</span></button> 34 <input type="hidden" name="mode" value="send"> 35 <input type="hidden" name="document" value="!document!"> 36 <input type="hidden" name="name" value="!name!"> 37 <input type="hidden" name="zip" value="!zip!"> 38 <input type="hidden" name="add" value="!add!"> 39 <input type="hidden" name="tel" value="!tel!"> 40 <input type="hidden" name="email" value="!email!"> 41 <input type="hidden" name="inquiry" value="!inquiry!"> 42</form> 43 44 </li> 45 </ul>

##テンプレートファイル エラー画面tmpl/error.tmpl

html

1 <h2>入力内容に不備がありました</h2> 2 <ul class="errormessageWrapper"> 3 <li class="e_m">!error!</li> 4 5 </ul> 6 7 8 9<a href="javascript:history.back();" class="btn05"><span>内容を修正する</span></a>

##テンプレートファイル 送信完了画面tmpl/done.tmpl

html

1 <h2>送信完了<br> 2<span>追って事務局よりご連絡差し上げます。<br> 3ご入力ありがとうございました。</span></h2> 4 5 6 7 8 9<a href="../index.html" class="btn07">お問い合わせ一覧</a>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

送信画面にname="mode"のinput要素がないのでは。

投稿2020/03/29 04:36

kei344

総合スコア69453

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ema-material

2020/03/29 04:44

確かに! ありがとうございます。動きました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問