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

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

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

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

690閲覧

PHP お問い合わせフォーム エラー

mgrates

総合スコア32

PHP

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2022/01/25 06:36

前提・実現したいこと

お問い合わせフォームを作っていますが、確認画面から完了画面(自分のメールアドレスにも内容を送信)まででエラーが発生してしまいます。

PHP初心者でコード規則がわかなずエラーの原因がわかりません。(ex.line16)
$name = $_POST['name'];

発生している問題・エラーメッセージ

Notice: Undefined index: name in /opt/lampp/htdocs/project/pf/done.php on line 16 Notice: Undefined index: email in /opt/lampp/htdocs/project/pf/done.php on line 18 Notice: Undefined index: contact_body in /opt/lampp/htdocs/project/pf/done.php on line 19 お名前が入力されていません。 メールアドレスが入力されていません。 お問合せ内容が入力されていません。

該当のソースコード

done.php

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>メール送信完了|メール送信フォーム</title> </head> <body> <?php /******************************* データの受け取り *******************************/ $name = $_POST['name']; //お名前 $email = $_POST["email"]; //メールアドレス $contact_body = $_POST["contact_body"]; //お問合せ内容 //危険な文字列を入力された場合にそのまま利用しない対策 $name = htmlspecialchars($name, ENT_QUOTES); $email = htmlspecialchars($email, ENT_QUOTES); $contact_body = htmlspecialchars($contact_body, ENT_QUOTES); /******************************* 未入力チェック *******************************/ $errmsg = ''; //エラーメッセージを空にしておく if ($name == '') { $errmsg = $errmsg.'<p>お名前が入力されていません。</p>'; } if ($email == '') { $errmsg = $errmsg.'<p>メールアドレスが入力されていません。</p>'; } if ($contact_body == '') { $errmsg = $errmsg.'<p>お問合せ内容が入力されていません。</p>'; } /******************************* メール送信の実行 *******************************/ if ($errmsg != '') { //エラーメッセージが空ではない場合には、[前のページへ戻る]ボタンを表示する echo $errmsg; //[前のページへ戻る]ボタンを表示する echo '<form method="post" action="index.php">'; echo '<input type="hidden" name="namae" value="'.$name.'">'; echo '<input type="hidden" name="mailaddress" value="'.$email.'">'; echo '<input type="hidden" name="naiyou" value="'.$contact_body.'">'; echo '<input type="submit" name="backbtn" value="前のページへ戻る">'; echo '</form>'; } else { //エラーメッセージが空の場合には、メール送信処理を実行する //メール本文の作成 $honbun = ''; $honbun .= "メールフォームよりお問い合わせがありました。\n\n"; $honbun .= "【お名前】\n"; $honbun .= $name."\n\n"; $honbun .= "【メールアドレス】\n"; $honbun .= $email."\n\n"; $honbun .= "【お問い合わせ内容】\n"; $honbun .= $contact_body."\n\n"; //エンコード処理 mb_language("Japanese"); mb_internal_encoding("UTF-8"); //メールの作成 $mail_to = "mgraces2042@gmail.com"; //送信先メールアドレス $mail_subject = "メールフォームよりお問い合わせ"; //メールの件名 $mail_body = $honbun; //メールの本文 $mail_header = "from:".$mailaddress; //送信元として表示されるメールアドレス //メール送信処理 $mailsousin = mb_send_mail($mail_to, $mail_subject, $mail_body, $mail_header); //メール送信結果 if($mailsousin == true) { echo '<p>お問い合わせメールを送信しました。</p>'; } else { echo '<p>メール送信でエラーが発生しました。</p>'; } } ?> <!-- <h2>メール送信完了</h2> <p class="message"> お問い合わせありがとうございます。1営業日以内にご返信させていただきます。<br> 自動返信メールをお送りしておりますのでご確認ください。<br> 1時間たっても届かない場合はお手数ですがこちらからご連絡ください。 </p> --> </body> </html>

confirm.php

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>sample</title> </head> <body> <h2>問合せ内容</h2> <form action="done.php" method="post"> <table border="1"> <tr> <td>名前</td> <td type="name" name="name"><?php echo $_POST['name'];?></td> </tr> <tr> <td>メールアドレス</td> <td type="email" name="email"><?php echo $_POST["email"]; ?></td> </tr> <tr> <td>問い合わせ内容</td> <td type="contact_body" name="contact_body"><?php echo $_POST["contact_body"]; ?></td> </tr> </table> <input type="submit" name="submit" value="送信" /> </form> </body> </html> <!-- <?php //直リンクされた場合index.phpにリダイレクト if($_SERVER["REQUEST_METHOD"] != "POST"){ header("Location: /pf.html"); exit(); } //各項目を内容を取得 $name = $_POST['name']; $email = $_POST['email']; $contact_body = $_POST['contact_body']; ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>確認画面</title> <style type="text/css"> body { background-color: #f9fff2; } .input-area { margin-bottom: 20px; } p { font-weight: bold; font-size: 20px; } .btn-border { display: inline-block; max-width: 180px; text-align: left; border: 2px solid #9ec34b; font-size: 15px; color: #9ec34b; text-decoration: none; font-weight: bold; padding: 8px 16px; border-radius: 4px; transition: .4s; } .btn-border:hover { background-color: #9ec34b; border-color: #cbe585; color: #FFF; } </style> </head> <body> <form action="complete.php" method="post"> <h2>お問い合わせ内容確認</h2> <div class="input-area"> <p>名前</p> <?php echo htmlspecialchars($name,ENT_QUOTES,'UTF-8');?> </div> <div class="input-area"> <p>メール</p> <?php echo htmlspecialchars($email,ENT_QUOTES,'UTF-8');?> </div> <div class="input-area"> <p>お問い合わせ内容</p> <?php echo nl2br(htmlspecialchars($contact_body,ENT_QUOTES,'UTF-8'));?> </div> <div class="input-area"> <input type='button' onclick='history.back()' value='戻る' class="btn-border"> <input type="submit" name="submit" value="送信" class="btn-border"> <input type="hidden" name="name" value="<?php echo $name;?>"> <input type="hidden" name="email" value="<?php echo $email;?>"> <input type="hidden" name="contact_body" value="<?php echo $contact_body;?>"> </div> </form> </body> </html> -->

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

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

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

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

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

guest

回答2

0

ベストアンサー

まず、submit 時 form 内に input タグがなかったら何も渡されないと考えてください。

たぶん入力画面から confirm.php にくるんですよね?
その際 input type="hidden" で入力された内容を保持しましょう。
もちろん画面表示は別途します。
--- 追記 ---
あくまで例ということで…

php

1 <form action="done.php" method="post"> 2 3 <table border="1"> 4 <tr> 5 <td>名前</td> 6 <td><?php echo $_POST['name'];?> 7<input type="hidden" name="name" value="<?php echo $_POST['name'];?>"></td> 8 </tr> 9 <tr> 10 <td>メールアドレス</td> 11 <td><?php echo $_POST["email"]; ?> 12<input type="hidden" name="email" value="<?php echo $_POST["email"];?>"></td> 13 </tr> 14 <tr> 15 <td>問い合わせ内容</td> 16 <td><?php echo $_POST["contact_body"]; ?> 17<input type="hidden" name="contact_body" value="<?php echo $_POST["contact_body"]; ?>"></td> 18 </tr> 19 </table> 20 21 <input type="submit" name="submit" value="送信" /> 22 </form>

投稿2022/01/25 07:01

編集2022/01/25 07:27
takasima20

総合スコア7458

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

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

mgrates

2022/01/25 07:08

コメントありがとうございます。 入力画面の確認ボタンをクリック→confirm.phpの送信ボタンをクリック→done.phpに移った際にエラーが出てしまいます。 その際 input type="hidden" で入力された内容を保持しましょう。 もちろん画面表示は別途します。 →具体的にどのようなコードになりますでしょうか?hiddenにすると、ボタンが消えてしまい解決方法が理解できなかったため、教えていただけると嬉しいです。
guest

0

処理的にはこうしてください
入力画面→(post)→確認画面→(セッション)→登録画面→(データ破棄)→完了画面

投稿2022/01/25 06:49

yambejp

総合スコア114784

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問