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

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

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

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

Q&A

解決済

1回答

768閲覧

お問合せフォーム作成して、確認画面から戻る時はフォームの場所でいいが、新規からページに入ってもフォーム位置からスタートになってしまう

yu.miura

総合スコア3

PHP

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

0グッド

0クリップ

投稿2021/05/17 05:05

お問合せフォーム作成して、
確認画面から戻る時はフォームの場所でいいが、
新規で、初めてページに入ってもフォーム位置からスタートになってしまう

確認ページのコードに入力画面からのアクセスでなければ、index.phpになるようにコードを記入しております。
何が原因で新規でページを初めて開くのにフォーム画面からスタートになるかがわかりません。

希望
・新規でページに入る時は普通にTOP画面からスタート
・お問合せフォームの確認画面から、戻る際はフォーム画面に戻りたい

下記にコードがありますので、ご教授お願い出来ないでしょうか?
最初のコードが記入画面で2番目のコードが確認画面です。

indexphp

1<?php 2session_start(); 3$error = []; 4 5if ($_SERVER['REQUEST_METHOD'] === 'POST') { 6 $post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING); 7 8 // フォームの送信時にエラーをチェックする 9 if ($post['name'] === '') { 10 $error['name'] = 'blank'; 11 }else if(mb_strlen($_POST['name'])>100){ 12 $error['name'] = 'name'; 13 } 14 15 if ($post['email'] === '') { 16 $error['email'] = 'blank'; 17 }else if(mb_strlen($_POST['email'])>100){ 18 $error['email'] = 'email'; 19 }else if (!filter_var($post['email'], FILTER_VALIDATE_EMAIL)) { 20 $error['email'] = 'email'; 21 } 22 if ($post['contact'] === '') { 23 $error['contact'] = 'blank'; 24 }else if(mb_strlen($_POST['contact'])>1000){ 25 $error['contact'] = 'contact'; 26 } 27 28 if (count($error) === 0) { 29 // エラーがないので確認画面に移動 30 $_SESSION['form'] = $post; 31 header('Location: confirm.php'); 32 exit(); 33 } 34} else { 35 if (isset($_SESSION['form'])) { 36 $post = $_SESSION['form']; 37 } 38} 39?> 40<!DOCTYPE html> 41<html lang="ja"> 42<head> 43 <meta charset="UTF-8"> 44 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 45 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 46 <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous"> 47 <link rel="stylesheet" href="stylesheet.css"> 48 <link href="https://use.fontawesome.com/releases/v5.15.3/css/all.css" rel="stylesheet"> 49 <title>my portfolio</title> 50 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 51</head> 52<body> 53<!-- お問合せフォーム画面 --> 54 <div class="container"> 55 <div class="main6" id=contact> 56 <h1>Contact</h1> 57 <form action="" method="POST" novalidate> 58 <div class="form-group"> 59 <div class="row"> 60 <div class="col-3"> 61 <label for="inputName">お名前</label> 62 </div> 63 <div class="col-2"> 64 <p class="require_item">必須</p> 65 </div> 66 <div class="col-7"> 67 <input type="text" name="name" id="inputName" class="form-control" value="<?php echo htmlspecialchars($post['name']); ?>" required autofocus> 68 <?php if ($error['name'] === 'blank') : ?> 69 <p class="error_msg">※お名前をご記入下さい</p> 70 <?php endif; ?> 71 <?php if(mb_strlen($_POST['name'])>100) : ?> 72 <p class="error_msg">※100文字以内でご記入下さい</p> 73 <?php endif; ?> 74 </div> 75 </div> 76 </div> 77 <div class="form-group"> 78 <div class="row"> 79 <div class="col-3"> 80 <label for="inputEmail">メールアドレス</label> 81 </div> 82 <div class="col-2"> 83 <p class="require_item">必須</p> 84 </div> 85 <div class="col-7"> 86 <input type="email" name="email" id="inputEmail" class="form-control" value="<?php echo htmlspecialchars($post['email']); ?>" required> 87 <?php if ($error['email'] === 'blank') : ?> 88 <p class="error_msg">※メールアドレスをご記入下さい</p> 89 <?php endif; ?> 90 <?php if(mb_strlen($_POST['email'])>100) : ?> 91 <p class="error_msg">※100文字以内でメールアドレスをご記入下さい</p> 92 <?php endif; ?> 93 <?php if ($error['email'] === 'email') : ?> 94 <p class="error_msg">※メールアドレスを正しくご記入ください</p> 95 <?php endif; ?> 96 </div> 97 </div> 98 </div> 99 <div class="form-group"> 100 <div class="row"> 101 <div class="col-3"> 102 <label for="inputContent">お問い合わせ内容</label> 103 </div> 104 <div class="col-2"> 105 <p class="require_item">必須</p> 106 </div> 107 <div class="col-7"> 108 <textarea name="contact" id="inputContent" rows="10" class="form-control" required><?php echo htmlspecialchars($post['contact']); ?></textarea> 109 <?php if ($error['contact'] === 'blank') : ?> 110 <p class="error_msg">※お問い合わせ内容をご記入下さい</p> 111 <?php endif; ?> 112 <?php if(mb_strlen($_POST['contact'])>1000) : ?> 113 <p class="error_msg">※1000文字以内でお問い合わせ内容をご記入下さい</p> 114 <?php endif; ?> 115 </div> 116 </div> 117 </div> 118 <div class="row"> 119 <div class="col-8 offset-4"> 120 <button type="submit">確認画面へ</button> 121 </div> 122 </div> 123 </form> 124 </div> 125 </div>

2番目(確認ページ)

confirmphp

1<?php 2session_start(); 3 4// 入力画面からのアクセスでなければ、戻す 5if (!isset($_SESSION['form'])) { 6 header('Location: index.php'); 7 exit(); 8} else { 9 $post = $_SESSION['form']; 10} 11 12if ($_SERVER['REQUEST_METHOD'] === 'POST') { 13 // メールを送信する 14 mb_language("ja"); 15 mb_internal_encoding("UTF-8"); 16 $to = 'yu.miura3@gmail.com'; 17 $from = $post['email']; 18 $subject = 'お問い合わせが届きました'; 19 $body = <<<EOT 20名前: {$post['name']} 21メールアドレス: {$post['email']} 22内容: 23{$post['contact']} 24 25EOT; 26 $header = ''; 27 $header .= "Content-Type: text/plain \r\n"; 28 $header .= "Return-Path: " . $from_mail . " \r\n"; 29 $header .= "From: " . $from . " \r\n"; 30 $header .= "Sender: " . $from . " \r\n"; 31 $header .= "Reply-To: " . $from_mail . " \r\n"; 32 $header .= "Organization: " . $from_name . " \r\n"; 33 $header .= "X-Sender: " . $from_mail . " \r\n"; 34 $header .= "X-Priority: 3 \r\n"; 35 mb_send_mail($to, $subject, $body, "From: {$from}"); 36 37 // セッションを消してお礼画面へ 38 unset($_SESSION['form']); 39 header('Location: thanks.html'); 40 exit(); 41} 42?> 43<!DOCTYPE html> 44<html lang="ja"> 45 46<head> 47 <meta charset="UTF-8"> 48 <title>お問合せフォーム</title> 49 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> 50 <link rel="stylesheet" type="text/css" href="contact.css"> 51</head> 52 53<body> 54 <!-- お問合せフォーム画面 --> 55 <div class="container"> 56 <form action="" method="POST"> 57 <p>お問い合わせ</p> 58 <div class="form-group"> 59 <div class="row"> 60 <div class="col-3"> 61 <label for="inputName">お名前</label> 62 </div> 63 <div class="col-9"> 64 <p class="display_item"><?php echo htmlspecialchars($post['name']); ?></p> 65 </div> 66 </div> 67 </div> 68 <div class="form-group"> 69 <div class="row"> 70 <div class="col-3"> 71 <label for="inputEmail">メールアドレス</label> 72 </div> 73 <div class="col-9"> 74 <p class="display_item"><?php echo htmlspecialchars($post['email']); ?></p> 75 </div> 76 </div> 77 </div> 78 <div class="form-group"> 79 <div class="row"> 80 <div class="col-3"> 81 <label for="inputContent">お問い合わせ内容</label> 82 </div> 83 <div class="col-9"> 84 <p class="display_item"><?php echo nl2br(htmlspecialchars($post['contact'])); ?></p> 85 </div> 86 </div> 87 </div> 88 <div class="row"> 89 <div class="col-9 offset-3"> 90 <a href="index.php">戻る</a> 91 <button type="submit">送信する</button> 92 </div> 93 </div> 94 </form> 95 </div> 96</body> 97 98</html>

お手数おかけいたしますが、皆様ご教授よろしくお願いいたします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/05/17 05:28

キャッシュが効いていませんか? Shiftキーを押しながら再読込ボタンのクリックで変わったりするならキャッシュですけど。
yu.miura

2021/05/17 11:05

返答ありがとうございます! 行ってみましたが、TOPから表示されないようです。 他にご教授お願い出来ないでしょうか?
guest

回答1

0

自己解決

完全に初歩的なミスでした

<input>属性にautofocusを指定していたので、すぐにそこに遷移するようになってしまっていました

お騒がせしました。

投稿2021/05/18 07:04

yu.miura

総合スコア3

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問