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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

HTML

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

Q&A

解決済

1回答

515閲覧

【フォームページ・PHP】確認画面のページ下部に入力ページも連なって表示されてしまう

billytoshio

総合スコア14

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

HTML

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

0グッド

0クリップ

投稿2020/02/12 11:15

事象・解決したいこと

入力ページの必須項目を入力して確認ページに遷移すると確認ページの下部に入力ページが連なって表示されてしまっています。
確認ページに遷移したら入力ページは表示させないようにしたいです。

分かっている事象内容

入力ページ(contact.php)でsubmitをクリックして確認ページが表示されても確認ページのURL(formmail.php)ではなく入力ページのURL(contact.php)となっている。

contact.php(入力ページ)のソース

PHP

1<?php 2 3error_reporting(E_ALL & ~E_NOTICE); 4 5if($_SERVER['REQUEST_METHOD']=="POST") { 6 7if(!empty($_POST)){ 8 //エラー項目の確認 9 10 //会社名が空の場合 11 if($_POST['company'] == '') { 12 $error['company'] = 'blank'; 13 } 14 15 //名前が空の場合 16 if($_POST['name'] == '') { 17 $error['name'] = 'blank'; 18 } 19 20 //ふりがなが空の場合 21 if($_POST['kana'] == '') { 22 $error['kana'] = 'blank'; 23 } 24 25 //Emailが空の場合 26 if($_POST['email1'] == '') { 27 $error['email1'] = 'blank'; 28 } 29 30 //Email(確認)が空の場合 31 if($_POST['email2'] == '') { 32 $error['email2'] = 'blank'; 33 } 34 35 //お問合せ内容が空の場合 36 if($_POST['textarea'] == '') { 37 $error['textarea'] = 'blank'; 38 } 39 40 //エラーがない場合は確認ページへページ遷移 41 if(empty($error)){ 42 $_SESSION['join'] = $_POST; 43 require "formmail.php"; 44 } 45} 46} 47?> 48<!DOCTYPE HTML> 49<html lang="ja"> 50<head> 51<meta charset="UTF-8"> 52<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 53<link rel="stylesheet" type="text/css" href="./css_files/index.css"> 54</head> 55<body> 56<div class="contact"> 57 <h2 class="contact_title">お問い合わせ</h2> 58</div> 59<div class="contactform"> 60<form action="" method="post"> 61 <dl> 62 <dt>会社名<span class="required2"><strong></strong></span></dt> 63 <dd><input type="text" name="company" value="<?php echo htmlspecialchars($_POST['company'], ENT_QUOTES, 'UTF-8');?>"> 64 <?php if(isset($error['company']) == 'blank'): ?> 65 <p class="error">※会社名を入力して下さい。</p> 66 <?php endif; ?> 67 </dd> 68 </dl> 69 <dl> 70 <dt>部署名</dt> 71 <dd><input type="text" name="department" value="<?php echo htmlspecialchars($_POST['department'], ENT_QUOTES, 'UTF-8');?>"></dd> 72 </dl> 73 <dl> 74 <dt>お名前<span class="required2"><strong></strong></span></dt> 75 <dd><input type="text" name="name" value="<?php echo htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8');?>"> 76 <?php if(isset($error['name']) == 'blank'): ?> 77 <p class="error">※お名前を入力して下さい。</p> 78 <?php endif; ?> 79 </dd> 80 </dl> 81 <dl> 82 <dt>ふりがな<span class="required2"><strong></strong></span></dt> 83 <dd><input type="text" name="kana" value="<?php echo htmlspecialchars($_POST['kana'], ENT_QUOTES, 'UTF-8');?>"> 84 <?php if(isset($error['kana']) == 'blank'): ?> 85 <p class="error">※ふりがなを入力して下さい。</p> 86 <?php endif; ?> 87 </dd> 88 </dl> 89 <dl> 90 <dt>Email<span class="required2"><strong></strong></span></dt> 91 <dd><input type="email" name="email1" value="<?php echo htmlspecialchars($_POST['email1'], ENT_QUOTES, 'UTF-8');?>"> 92 <?php if(isset($error['email1']) == 'blank'): ?> 93 <p class="error">※Emailを入力して下さい。</p> 94 <?php endif; ?> 95 </dd> 96 </dl> 97 <dl> 98 <dt>Email(確認)<span class="required2"><strong></strong></span></dt> 99 <dd><input type="email" name="email2" value="<?php echo htmlspecialchars($_POST['email2'], ENT_QUOTES, 'UTF-8');?>"> 100 <?php if(isset($error['email2']) == 'blank'): ?> 101 <p class="error">※Email(確認)を入力して下さい。</p> 102 <?php endif; ?> 103 </dd> 104 </dl> 105 <dl> 106 <dt>お電話番号</dt> 107 <dd><input type="text" name="phone" value="<?php echo htmlspecialchars($_POST['phone'], ENT_QUOTES, 'UTF-8');?>"></dd> 108 </dl> 109 <dl> 110 <dt>お問合せ内容<span class="required2"><strong></strong></span></dt> 111 <dd><textarea name="textarea" cols="5" rows="2"><?php echo htmlspecialchars($_POST['textarea'], ENT_QUOTES, 'UTF-8');?></textarea> 112 <?php if(isset($error['textarea']) == 'blank'): ?> 113 <p class="error">※お問合せ内容を入力して下さい。</p> 114 <?php endif; ?> 115 </dd> 116 </dl> 117 </div> 118 <div class="submit"> 119 <p><input type="submit" name="Submit2" value="入力内容を確認する" /></p> 120 </div> 121</form> 122</body> 123</html>

formmail.php(確認ページ)のソース

PHP

1<!DOCTYPE HTML> 2<html lang="ja"> 3<head> 4<meta charset="UTF-8"> 5<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6<link rel="stylesheet" type="text/css" href="./css_files/index.css"> 7</head> 8<body> 9<div class="contact"> 10 <h2 class="contact_title">お問い合わせ</h2> 11</div> 12 13<div class="contactform_confirm"> 14<form action="send.php" method="post"> 15 <dl> 16 <dt>会社名</dt> 17 <dd> <?php echo $_POST["company"]; ?></dd> 18 </dl> 19 <dl> 20 <dt>部署名</dt> 21 <dd> <?php echo $_POST["department"]; ?></dd> 22 </dl> 23 <dl> 24 <dt>お名前</dt> 25 <dd> <?php echo $_POST["name"]; ?></dd> 26 </dl> 27 <dl> 28 <dt>ふりがな</dt> 29 <dd> <?php echo $_POST["kana"]; ?></dd> 30 </dl> 31 <dl> 32 <dt>Email</dt> 33 <dd> <?php echo $_POST["email1"]; ?></dd> 34 </dl> 35 <dl> 36 <dt>お電話番号</dt> 37 <dd> <?php echo $_POST["phone"]; ?></dd> 38 </dl> 39 <dl> 40 <dt>お問合せ内容</dt> 41 <dd class="textarea_dd"><?php echo nl2br($_POST["textarea"]); ?></dd> 42 </dl> 43 </div> 44 45 <div class="button"> 46 <div class="fix"> 47 <p><input type="button" onclick="history.back()" value="修正する" ></p> 48 </div> 49 50 <div class="send"> 51 <p><input type="submit" name="send" value="送信する" ></p> 52 </div> 53 </div> 54</form> 55</body> 56</html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

確認ページの下部に入力ページが連なって表示されてしまっています。

でしょうね。

require "formmail.php";

もっとミニマムなコードで試してみると良いのですけど。
requireなりincludeって対象のコードを「読み込む」ので、
要は対象のコードがそこにそのままがっぽり入ると思って良いです。

下記のようなコードを試してみてください。

a.php

php

1<?php 2echo "hoge\n";

b.php

php

1<?php 2require "a.php"; 3 4echo "fuga";

提示のコードで行われているのは「遷移」じゃないですからね。

やるならheader()でLocation指定することですね。
もちろんLocationによるリダイレクトではPOSTにはなりませんし、
折角$_SESSIONに入れたのですから$_SESSIONを使って確認画面で表示をすることです。

※ただし今のままだとXSSが発生するので、必ずその対応はすること。

投稿2020/02/12 11:29

m.ts10806

総合スコア80859

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

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

billytoshio

2020/02/12 13:04

ご回答ありがとうございました。 ご記載いただいたコードを試してみて状況の理解も出来ました。 追加で3点質問なのですが、 ・$_SESSIONを使って確認画面に表示させる場合はheader()でLocation指定させるで間違いないでしょうか? ・$_SESSIONを使うことで何か懸念が発生することはあるのでしょうか? ・$_SESSIONを使う以外で正常に確認画面を表示させることは出来るのでしょうか? 質問ばかりで、また、的をえない質問があるかもしれず大変恐縮ですが、 何卒宜しくお願い致します。
m.ts10806

2020/02/12 19:46

追加質問があるのになぜ解決済みとされたのでしょうか。
billytoshio

2020/02/13 02:36

申し訳ございません。。 事象要因は判明したためベストアンサーをつけてしまいました。 一度ベストアンサーをはずしてしまって問題ないのでしょうか。 teratailを良く理解しておらず大変恐縮です。
m.ts10806

2020/02/13 02:37

要件追加なら別質問へ 回答に関する確認事項ならそのまま続けたら良いと思います。 意図はご自身のみ知ってると思うので、決めてください
billytoshio

2020/02/13 05:54

承知致しました。 ご丁寧にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問