前提・実現したいこと
問い合わせフォームで入力された値を正常に取得したい。
もしくは、空白やスペースのみでの送信ができないよう設定したい。
発生している問題
問い合わせフォームから送信されたメールに、入力した情報が表示されない。 もしくは、空白やスペースのみで送信できてしまう。 【詳細】 とある会社のホームページを作成し、 問い合わせフォームや求人の応募フォームを構築しました。 自分のPCにて送信テストを行い、 送られたメールは特に問題なく入力された情報は表示されました。 しかし、実際にその会社に送られてくるメール内容は 入力されるべき値がすべて空白のものがほとんどでした。 HTMLにて、空白やスペースのみでの送信はできないよう コーディングしているのですが、 なぜこのような事が起きるのでしょうか。 因みにセッションはまだ学習できていないため未導入なのですが、 今回の問題との関係性はあるのでしょうか。 P初心者なので、ご教示宜しくお願い致します。
該当のソースコード(HTML・問い合わせフォーム)
上記ソース省略 <form action="confirm/contact-confirm.php" method="post" name="form"> <table class="contact-form"> <tr class="contact-form__row"> <th class="contact-form__head"> 氏名(会社名) <img class="icon-size" src="../img/req-icon.png" alt="必須"> </th> <td class="contact-form__data"> <input class="contact-form__default" type="text" name="Name" placeholder="山田 太郎(フルネーム)" required maxlength="35" pattern=".*\S+.*" title="正式な氏名・会社名を入力してください"/> </td> </tr> <tr class="contact-form__row"> <th class="contact-form__head"> メールアドレス <img class="icon-size" src="../img/req-icon.png" alt="必須"> </th> <td class="contact-form__data"> <input class="contact-form__default" type="email" name="SenderAddress" placeholder="tarou@exsample.jp" required maxlength="50" pattern=".*\S+.*" title="正式なアドレスを入力してください"/> </td> </tr> <tr class="contact-form__row"> <th class="contact-form__head"> 電話番号 <img class="icon-size" src="../img/req-icon.png" alt="必須"> </th> <td class="contact-form__data"> <input class="contact-form__default" type="tel" name="Tel" placeholder="09012345678(ハイフンなし)" required maxlength="11" pattern=".*\S+.*" title="正式な電話番号を入力してください"/> </td> </tr> <tr class="contact-form__row"> <th class="contact-form__head"> ご希望の連絡方法 <img class="icon-size" src="../img/req-icon.png" alt="必須"> </th> <td class="contact-form__data"> <label class="focus"> <input class="contact-form__way" type="radio" name="WaysToContact" value="電話" checked="checked">電話 </label> <label class="focus"> <input class="contact-form__way" type="radio" name="WaysToContact" value="メール">メール </label> </td> </tr> <tr class="contact-form__row"> <th class="contact-form__head"> お問い合わせ内容 <img class="icon-size" src="../img/req-icon.png" alt="必須"> </th> <td class="contact-form__data"> <textarea class="contact-form__textarea" name="Message" placeholder="お問い合わせ内容をご記入ください" required maxlength="500" pattern=".*\S+.*" title="内容を入力してください"></textarea> </td> </tr> </table> <div class="contact-form__reset"> <input type="reset" value="リセット"/> </div> <div class="contact-form__submit"> <input type="submit" value="内容のご確認"/> </div> </form> 以下ソース省略
該当のソースコード(PHP/HTML・確認画面)
上記ソース省略 <body> ?php mb_language("Japanese"); //日本語対応の対策、UTF-8 mb_internal_encoding("UTF-8"); //htmlからの取得項目 $name = htmlspecialchars($_POST['Name'] ,ENT_QUOTES ,"UTF-8" ); $senderAddress = htmlspecialchars($_POST['SenderAddress'] ,ENT_QUOTES ,"UTF-8" ); $tel = htmlspecialchars($_POST['Tel'] ,ENT_QUOTES ,"UTF-8" ); $waysToContact = htmlspecialchars($_POST['WaysToContact'] ,ENT_QUOTES ,"UTF-8" ); $message = htmlspecialchars($_POST['Message'] ,ENT_QUOTES ,"UTF-8" ); if(isset($name, $senderAddress, $tel, $waysToContact, $message)){ echo " 中間ソース省略 <form action=\"result/contact-mail_result.php\" method=\"post\" name=\"form\"> <table class=\"contact-form\"> <tr class=\"contact-form__row\"> <th class=\"contact-form__head\"> 氏名(会社名) </th> <td class=\"contact-form__data\"> $name </td> </tr> <tr class=\"contact-form__row\"> <th class=\"contact-form__head\"> メールアドレス </th> <td class=\"contact-form__data\"> $senderAddress </td> </tr> <tr class=\"contact-form__row\"> <th class=\"contact-form__head\"> 電話番号 </th> <td class=\"contact-form__data\"> $tel </td> </tr> <tr class=\"contact-form__row\"> <th class=\"contact-form__head\"> ご希望の連絡方法 </th> <td class=\"contact-form__data\"> $waysToContact </td> </tr> <tr class=\"contact-form__row\"> <th class=\"contact-form__head\"> お問い合わせ内容 </th> <td class=\"contact-form__data english-escape\"> $message </td> </tr> </table> <input type=\"hidden\" name=\"Name\" value=\"$name\"> <input type=\"hidden\" name=\"SenderAddress\" value=\"$senderAddress\"> <input type=\"hidden\" name=\"Tel\" value=\"$tel\"> <input type=\"hidden\" name=\"WaysToContact\" value=\"$waysToContact\"> <input type=\"hidden\" name=\"Message\" value=\"$message\"> <div class=\"contact-form__return\"> <a href=\"../contact.html\">入力画面へ戻る</a> </div> <div class=\"contact-form__submit\"> <input type=\"submit\" value=\"送信\"/> </div> </form> "; } else { echo ' 正常に値が取得できなかった場合の画面 '; }; ?> </body> </html>
該当のソースコード(PHP/HTML・送信完了画面)
上記ソース省略 <body> <?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); //htmlからの取得項目 $name = htmlspecialchars($_POST['Name'] ,ENT_QUOTES ,"UTF-8" ); $senderAddress = htmlspecialchars($_POST['SenderAddress'] ,ENT_QUOTES ,"UTF-8" ); $tel = htmlspecialchars($_POST['Tel'] ,ENT_QUOTES ,"UTF-8" ); $postalCode1 = htmlspecialchars($_POST['PostalCode1'] ,ENT_QUOTES ,"UTF-8" ); $postalCode2 = htmlspecialchars($_POST['PostalCode2'] ,ENT_QUOTES ,"UTF-8" ); $prefectures = htmlspecialchars($_POST['Prefectures'] ,ENT_QUOTES ,"UTF-8" ); $municipalities = htmlspecialchars($_POST['Municipalities'] ,ENT_QUOTES ,"UTF-8" ); $address = htmlspecialchars($_POST['Address'] ,ENT_QUOTES ,"UTF-8" ); $waysToContact = htmlspecialchars($_POST['WaysToContact'] ,ENT_QUOTES ,"UTF-8" ); $message = htmlspecialchars($_POST['Message'] ,ENT_QUOTES ,"UTF-8" ); //入力項目チェックここまで //メール本文内に表示する情報の文章形式(型)設定 $text_name = "[氏名(社名)] " ."\n" .$name; $text_senderAddress = "[メールアドレス] " ."\n" .$senderAddress; $text_tel = "[電話番号] " ."\n" .$tel; $text_postalCode = "[住所]" ."\n" ."〒 " .$postalCode1 ."-" .$postalCode2; $text_streetAddress = $prefectures .$municipalities .$address; $text_waysToContact = "[連絡方法]" ."\n" .$waysToContact; $text_message = "[問い合わせ内容]" ."\n" .$message; //表示させたくない文字列の排除 if(1 <= strlen($postalCode1)){ } else { unset($text_postalCode); }; //メール送信関数の引数設定 $to = "****************.com"; $title = "ホームページからのお問合せ"; $text = $text_name ."\n\n" .$text_senderAddress ."\n\n" .$text_tel ."\n\n" .$text_postalCode ."\n" .$text_streetAddress ."\n\n" .$text_waysToContact ."\n\n\n" .$text_message; $from = "From: $senderAddress"; if(mb_send_mail($to, $title, $text, $from)){ echo " 送信完了画面 "; } else { echo " 送信失敗画面 "; }; ?> </body> </html>
試したこと
・空白スペースのみは送信不可にするため、HTMLでpattern属性の設定
・自分のPCから送信のテスト
結果:入力された情報はすべて表示された。空白スペースのみでの送信はできなかった。
・自分以外からの不特定な問い合わせメールで、
特に問題なく情報が表示されているケースも確認できた
補足情報(FW/ツールのバージョンなど)
OS:Windows10
サーバー:さくらレンタルサーバー
環境:brackets
バージョン:PHP/7.3.9 HTML5
PHPスキル:独学、初心者
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/14 02:00
2020/10/14 02:13
2020/10/14 02:15
2020/10/14 02:51
2020/10/14 03:01