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

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

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

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

HTML

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

Q&A

1回答

524閲覧

問い合わせページのinputについて

nanasiki

総合スコア2

PHP

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

HTML

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

0グッド

0クリップ

投稿2022/04/24 10:26

###前提・実現したいこと
お問い合わせフォームを作ろうとしています。
input内にそれぞれ情報を入力して【送信】ボタンを押してもinput内の情報が消えてメールが届きます。
また、問い合わせをした方への「問い合わせを受付ました」メールも届きません。
どこが原因となっているかが不明のため教えていただけると幸いです。
簡単な質問で申し訳ないのですがお願いします。

###該当のソースコード

php,html

1コード 2```<?php 3 session_start(); 4?> 5 6<!DOCTYPE html> 7<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 8 9<?php 10 $mode = 'input'; 11 $errmessage = array(); 12 if( isset($_POST['back']) && $_POST['back'] ) 13 { 14 // 何もしない 15 } else if( isset($_POST['confirm']) && $_POST['confirm'] ) 16 { 17 // 確認画面 18 if( !$_POST['fullname'] ) { 19 $errmessage[] = "名前を入力してください"; 20 } else if( mb_strlen($_POST['fullname']) > 100 ){ 21 $errmessage[] = "名前は100文字以内にしてください"; 22 } 23 $_SESSION['fullname'] = htmlspecialchars($_POST['fullname'], ENT_QUOTES); 24 25 //TEL 26 if( !$_POST['tel'] ) { 27 $errmessage[] = "電話番号を入力してください"; 28 } else if( mb_strlen($_POST['tel']) > 13 ){ 29 $errmessage[] = "電話番号は13文字以内にしてください"; 30 } 31 $_SESSION['tel'] = htmlspecialchars($_POST['tel'], ENT_QUOTES); 32 33 //EMAIL 34 if( !$_POST['email'] ) { 35 $errmessage[] = "Eメールを入力してください"; 36 } else if( mb_strlen($_POST['email']) > 200 ){ 37 $errmessage[] = "Eメールは200文字以内にしてください"; 38 } else if( !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ){ 39 $errmessage[] = "メールアドレスが不正です"; 40 } 41 $_SESSION['email'] = htmlspecialchars($_POST['email'], ENT_QUOTES); 42 43 //問い合わせ 44 if( !$_POST['message'] ){ 45 $errmessage[] = "お問い合わせ内容を入力してください"; 46 } else if( mb_strlen($_POST['message']) > 500 ){ 47 $errmessage[] = "お問い合わせ内容は500文字以内にしてください"; 48 } 49 $_SESSION['message'] = htmlspecialchars($_POST['message'], ENT_QUOTES); 50 51 if( $errmessage ){ 52 $mode = 'input'; 53 } else { 54 $mode = 'confirm'; 55 } 56 } else if( isset($_POST['send']) && $_POST['send'] ){ 57 // 送信ボタンを押したとき 58 $message = "お問い合わせを受け付けました \r\n" 59 . "名前: " . $_SESSION['fullname'] . "\r\n" 60 . "電話: " . $_SESSION['tel'] . "\r\n" 61 . "email: " . $_SESSION['email'] . "\r\n" 62 . "お問い合わせ内容:\r\n" 63 . preg_replace("/\r\n|\r|\n/", "\r\n", $_SESSION['message']); 64 65 mail($_SESSION['email'],'お問い合わせありがとうございます',$message); 66 mail('省略@gmail.com','お問い合わせありがとうございます',$message); 67 $_SESSION = array(); 68 $mode = 'send'; 69 } else { 70 $_SESSION['fullname'] = ""; 71 $_SESSION['tel'] = ""; 72 $_SESSION['email'] = ""; 73 $_SESSION['message'] = ""; 74 } 75?> 76</head> 77 78<body> 79 80<?php if( $mode == 'input' ){ ?> 81<?php 82 if( $errmessage ){ 83 echo '<div style="color:red;">'; 84 echo implode('<br>', $errmessage ); 85 echo '</div>'; 86 } 87 ?> 88 89<div id="area9" class="contact"> 90<div class="wmain"> 91<h2 class="after fnt">無料相談フォーム</h2> 92<p class="sub">ただいまご依頼が殺到しております。<br class="sp">お早めにお問い合わせください。</p> 93<div class="mailform"> 94<form action="" method="post" class="nyuryoku"> 95<table> 96<tbody> 97<tr> 98<th class="hissu">お名前</th> 99<td> 100<input type="text" class="form-text" placeholder="例)山田 太郎" name="fullname" value="<?php echo $_SESSION['fullname'] ?>"> 101</td> 102</tr> 103<tr> 104<th class="hissu">メールアドレス</th> 105<td> 106<input type="text" class="form-text" placeholder="例)yamada@example.com" name="email" value="<?php echo $_SESSION['email'] ?>"> 107</td> 108</tr> 109<tr> 110<th class="hissu">電話番号</th> 111<td> 112<input type="text" class="form-text" placeholder="例)03-1234-5678" name="tel" value="<?php echo $_SESSION['tel'] ?>"> 113</td> 114</tr> 115<tr> 116<th class="nini">ご相談内容</th> 117<td> 118<textarea name="message" class="form-textarea" placeholder="ご相談内容をご記入ください。" value="<?php echo $_SESSION['message'] ?>"></textarea> 119</td> 120</tr> 121</tbody> 122</table> 123<div class="center"> 124<input type="submit" name="confirm" value="確認画面へ" class="form-btn-conf form-btn"> 125</div> 126</form> 127 128<?php } else if( $mode == 'confirm' ){ ?> 129 <!-- 確認画面 --> 130 <form action="" class="confirm" method="post" style=" 131 text-align: center; 132 font-size: 1.3rem; 133 line-height: normal; 134"> 135 名前: <?php echo $_SESSION['fullname'] ?><br> 136 電話:  <?php echo $_SESSION['tel'] ?><br> 137 Eメール:<?php echo $_SESSION['email'] ?><br> 138 お問い合わせ内容<br> 139 <?php echo nl2br($_SESSION['message']) ?><br> 140 <input type="submit" class="back" name="back" value="戻る" style=" 141 margin-right: 10px; 142"/> 143 <input type="submit" class="send"name="send" value="送信" style=" 144 margin-left: 10px; 145"/> 146 147 </form> 148 <?php } else { ?> 149 <!-- 完了画面 --> 150 <h6>送信しました。 151 <br>お問い合わせありがとうございました。 152 <a href="" class="btn04 home"><span>TOPへ</span></a></h6> 153 <?php } ?> 154 155</div> 156</div> 157</div> 158 159</body></html>

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

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

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

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

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

guest

回答1

0

input内にそれぞれ情報を入力して【送信】ボタンを押してもinput内の情報が消えてメールが届きます。

セッション情報を元にinputへ初期値セットされてますが、セッション空にしていますね。

PHP

1 mail($_SESSION['email'],'お問い合わせありがとうございます',$message); 2 mail('省略@gmail.com','お問い合わせありがとうございます',$message); 3 $_SESSION = array(); //ここ

空にしたキーを参照しているのでnotice出てるのでは。(エラー表示ONを)

PHP

1<?php 2$hoge = []; 3 4echo $hoge["a"]; //PHP Warning: Undefined array key "a"

問い合わせをした方への「問い合わせを受付ました」メールも届きません。

$_SESSION['email']の内容が実在するメールアドレスではない可能性があると思います。(スペース1つでも別のデータです。)

PHPの実行環境分かりませんが、mail()の第5引数$additional_paramsにエラーがあった時のメール受信設定を入れて、確認してみてください。

蛇足:
htmlspecialchars()は画面表示時にのみ対応してください。

投稿2022/04/24 11:05

編集2022/04/24 21:04
m.ts10806

総合スコア80850

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

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

m.ts10806

2022/04/24 21:05

嫌がらせ目的の低評価は規約違反です。 運営相談済み。低評価された方はコメントを。 質問に対してふざけた内容ではありません。
nanasiki

2022/04/26 16:14

m.ts10806様 お教えを頂き誠にありがとうございます。 '省略@gmail.com'の方へは、SESSIONの中身は空になった状態でメールが届いており、その上の$_SESSION['email']へはメールが届いていないので、仰る通りどこかでSESSIONの中身が空になっているのかと思います。 $_SESSION = array(); //ここ 上記でセッションを空にしているとのことですが、どのように表記すれば初期化せずSESSIONの中身を維持できるでしょうか?
m.ts10806

2022/04/26 20:41

>どのように表記すれば初期化せずSESSIONの中身を維持できるでしょうか? ひとまずその1行削除しては。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問