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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

CSS

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

Q&A

1回答

780閲覧

お問い合わせフォームで入力後、確認ページに進みません

pochi1

総合スコア0

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

CSS

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

0グッド

1クリップ

投稿2021/03/27 04:36

編集2021/03/27 04:46

前提・実現したいこと

お問い合わせフォームを作成中です。
内容を入力後、確認ページに移行させたいです。

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

送信ボタンを押しても確認ページのconfirm.phpに移動してくれません。

contact.php

php

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>CAFE</title> 7 <link rel="stylesheet" type="text/css" href="contact.css"> 8 <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> 9 <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css"> 10 <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 11 <script src="contact.js"></script> 12</head> 13 14<body> 15 <?php include("htmlspecialchars.php"); ?> 16 17 <?php include("signin.php"); ?> 18 19 <header> 20 <?php include("sub_header.php"); ?> 21 </header> 22 23 <main> 24 <div class="contact-box"> 25 <div class="contact-title">お問い合わせ</div> 26 <div class="contact-contents"> 27 <div class="sub_title">下記の項目をご記入の上送信ボタンを押してください</div> 28 <p class="contact-description">送信頂いた件につきましては、当社より折り返しご連絡を差し上げます。 29 <br>なお、ご連絡までに、お時間を頂く場合もございますので予めご了承ください。 30 <br><span class="asterisk">*</span>は必須項目となります。</p> 31 <form action="confirm.php" method="post"> 32 <!-- 名前入力欄 --> 33 <div> 34 <label for="name">氏名<span class="asterisk">*</span></label> 35 <?php if($_POST): ?> 36 <?php if($_POST["name"] == ""): ?> 37 <span class="not"><?php echo "氏名が入力されていません"; ?></span> 38 <?php elseif(mb_strlen($_POST["name"]) > 10): ?> 39 <span class="not"><?php echo "氏名は10文字以内で入力してください"; ?></span> 40 <?php endif ?> 41 <?php endif ?> 42 <br> 43 <input type="text" class="name" name="name" placeholder="山田太郎" 44 value= "<?php if ($_POST) { 45 echo h($_POST["name"]); 46 } ?>" > 47 </div> 48 49 <!-- フリガナ入力欄 --> 50 <div> 51 <label for="furigana">フリガナ<span class="asterisk">*</span></label> 52 <?php if($_POST): ?> 53 <?php if($_POST["furigana"] == ""): ?> 54 <span class="not"><?php echo "フリガナが入力されていません"; ?></span> 55 <?php elseif(mb_strlen($_POST["furigana"]) > 10): ?> 56 <span class="not"><?php echo "フリガナは10文字以内で入力してください"; ?></span> 57 <?php endif ?> 58 <?php endif ?> 59 <br> 60 <input type="text" class="furigana" name="furigana" placeholder="ヤマダタロウ" 61 value= "<?php if ($_POST) { 62 echo h($_POST["furigana"]); 63 } ?>" > 64 </div> 65 66 <!-- 電話番号入力欄 --> 67 <div> 68 <label for="tel">電話番号</label> 69 <?php if($_POST): ?> 70 <?php if($_POST["tel"]): ?> 71 <?php $exp = "/^[0-9]+$/"; ?> 72 <?php if(!preg_match($exp, $_POST["tel"])): ?> 73 <span class="not"><?php echo "電話番号の入力が間違っています"; ?></span> 74 <?php endif ?> 75 <?php endif ?> 76 <?php endif ?> 77 <br> 78 <input type="text" class="tel" name="tel" placeholder="09012345678" 79 value= "<?php if ($_POST) { 80 echo h($_POST["tel"]); 81 } ?>" > 82 </div> 83 84 <!-- メールアドレス入力欄 --> 85 <div> 86 <label for="mail">メールアドレス<span class="asterisk">*</span></label> 87 <?php if($_POST): ?> 88 <?php $exp = "/^[\w.+-]+@[\w.+-]+$/"; ?> 89 <?php if($_POST["mail"] == ""): ?> 90 <span class="not"><?php echo "メールアドレスが入力されていません"; ?></span> 91 <?php elseif(!preg_match($exp, $_POST["mail"])): ?> 92 <span class="not"><?php echo "メールアドレスの入力が間違っています"; ?></span> 93 <?php endif ?> 94 <?php endif ?> 95 <br> 96 <input type="text" class="mail" class="mail" name="mail" placeholder="test@test.co.jp" 97 value= "<?php if ($_POST) { 98 echo h($_POST["mail"]); 99 } ?>" > 100 </div> 101 102 <!-- お問い合わせ内容入力欄 --> 103 <div class="sub_title"> 104 お問い合わせ内容をご記入ください<span class="asterisk">*</span> 105 <?php if($_POST): ?> 106 <?php if($_POST["contact_message"] == ""): ?> 107 <span class="not"><?php echo "お問い合わせ内容が入力されていません"; ?></span> 108 <?php endif ?> 109 <?php endif ?> 110 </div> 111 <div> 112 <textarea name="contact_message" class="contact_message"><?php if ($_POST) { 113 echo h($_POST["contact_message"]); 114 // str_replace('<br>', '<br>', h($_POST["contact_message"]) ); 115 } ?></textarea> 116 </div> 117 118 <input class="submit_button" type="submit" name="send" value="送 信"> 119 </form> 120 </div> 121 </div> 122 </main> 123 124 <footer> 125 <?php include("footer.php"); ?> 126 </footer> 127</body> 128</html> 129

###confirm.php

php

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>CAFE</title> 7 <link rel="stylesheet" type="text/css" href="confirm.css"> 8 <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> 9 <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css"> 10 <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 11 <script src="contact.js"></script> 12</head> 13 14<body> 15 <?php include("validation.php"); ?> 16 17 <?php include("htmlspecialchars.php"); ?> 18 19 <?php include("signin.php"); ?> 20 21 <header> 22 <?php include("sub_header.php"); ?> 23 </header> 24 25 <main> 26 <div class="contact-box"> 27 <div class="contact-title">お問い合わせ</div> 28 <div class="contact-contents"> 29 <p class="contact-description">下記の内容をご確認の上送信ボタンを押してください 30 <br>内容を訂正する場合は戻るを押してください。</p> 31 <?php 32 $name = h($_POST["name"]); 33 $furigana = h($_POST["furigana"]); 34 $tel = h($_POST["tel"]); 35 $mail = h($_POST["mail"]); 36 $contact_message = h($_POST["contact_message"]); 37 ?> 38 <form action="complete.php" method="post"> 39 <input type="hidden" name="name" value="<?php echo $name; ?>"> 40 <input type="hidden" name="furigana" value="<?php echo $furigana; ?>"> 41 <input type="hidden" name="tel" value="<?php echo $tel; ?>"> 42 <input type="hidden" name="mail" value="<?php echo $mail; ?>"> 43 <input type="hidden" name="contact_message" value="<?php echo $contact_message; ?>"> 44 <div> 45 <p class="label_name"><label for="name">氏名</label></p> 46 <p class="contact_value"><?php echo $name; ?></p> 47 </div> 48 <div> 49 <p class="label_name"><label for="furigan">フリガナ</label></p> 50 <p class="contact_value"><?php echo $furigana; ?></p> 51 </div> 52 <div> 53 <p class="label_name"><label for="tel">電話番号</label></p> 54 <p class="contact_value"><?php echo $tel; ?></p> 55 </div> 56 <div> 57 <p class="label_name"><label for="mail">メールアドレス</label></p> 58 <p class="contact_value"><?php echo $mail; ?></p> 59 </div> 60 <div> 61 <p class="label_name"><label for="contact_message">お問い合わせ内容</label></p> 62 <p class="contact_value"><?php echo nl2br($contact_message); ?></p> 63 </div> 64 <div class="submit_box"> 65 <input class="send_button" class="submit_button" type="submit" value="送 信"> 66 <input class="back_button" class="submit_button" type="submit" value="戻 る"> 67 </div> 68 </form> 69 </div> 70 </div> 71 </main> 72 73 <footer> 74 <?php include("footer.php"); ?> 75 </footer> 76</body> 77</html>

試したこと

<form action="confirm.php" method="post"> と移動先を指定しているのに動かない理由がわかりません。

補足情報(FW/ツールのバージョンなど)

コード一つ目が入力ページ
二つ目が確認ページです

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/03/27 04:39

コードの、どれがどれですか? わかり易く丁寧に。
guest

回答1

0

コードにしきりにif($_POST)って判定箇所が見受けられますが、
フォームデータはいくらでも改ざんされたデータを送信できてしまうため、
POST受信したデータが有るってだけで欲しいデータがあると判定するかのようなコードは危ういです。
$_POST["name"]をちゃんと扱うなら、
if (isset($_POST["name"]))と丁寧に必要なデータの存在を確認するべきかと。

それと、htmlの中にphpのコードがごちゃまぜになっているとわかりにくいため、
htmlを出力する前に必要な判定処理は完結しておくことがおすすめです。
エラーメッセージ表示に$errmsg[]なんてのを定義して、
$errmsg["name"]にはnameパラメータのエラーメッセージが入る、カラだったら問題なしとするなど。
冒頭で

php

1 $errmsg = []; // 配列として初期化 2 3 $errmsg['name'] = ''; // name用のメッセージとして初期化 4 if (isset($_POST['name'])) { 5 if (mb_strlen($_POST['name']) > 10) { 6 $errmsg['name'] = "氏名は10文字以内で入力してください"; 7 } 8 } 9 else { 10 $errmsg['name'] = "氏名が入力されていません"; 11 }

としておけば、のちのhtml表示箇所では $errmsg['name'] の有無だけの判定で最小化できます。

php

1<span class="not"><?php echo h($errmsg['name']); ?></span>

あと、teratailの過去の質問にまれにあったケースだけど、
webサーバーを用意してサーバー上でphpのコードを動かしていますよね?
webブラウザから、http://~ とかurl入力してますよね?
(バカにするわけじゃなく、ほんとにそういう人がいたので、念のため。)

投稿2021/03/27 05:11

編集2021/03/27 06:26
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問