###前提
【現在】
■form.php
・入力項目入力(JS実施)
・POST
…↓↓…
■check.php
・サーバーサイドのバリデーション&重複確認
・エラーがあった場合:check.php画面にてエラー表示されている
###やりたいこと
下記のようなエラー(check.php)にて、エラーが発生した場合、
form.phpのページに戻ってエラーを表示したいです。
form.php
php
1 <?php 2session_start(); 3----省略----- 4?> 5 6<!DOCTYPE html> 7<html> 8<head> 9-----省略----- 10</head> 11<body> 12 13<script type="text/javascript"> 14--JS省略---- 15</script> 16 17<form method="post" name="form1" id="form1" action="check.php"> 18 19<dt><span class="req">メールアドレス 必須</span></dt> 20<input type="text" id="mail" name="mail"> 21<p><input type="hidden" name="token" value="<?=$token?>"></p> 22<span id="mail_error" class="error_m"></span><br> 23 24 25<dt><span class="req">メールアドレス(確認用)必須</span></dt> 26<p><input type="text" id="mail_2" name="mail_2"></p> 27<span id="mail_error_2" class="error_m"></span><br> 28 29 30<p><input type="submit" name="sub" id="sub" value="登録する"></p> 31<?php echo $_SESSION["error"]; ?> 32 33</form> 34</body> 35</html>
check.php↓
php
1<?php 2session_start(); 3 4header("Content-type: text/html;unix_socket=/tmp/mysql.sock;charset=utf-8"); 5 6 7//データベース接続 8require_once("db.php"); 9$dbh = db_connect(); 10 11 12//エラーメッセージの初期化 13$errors = array(); 14 15if(empty($_POST)) { 16 header("Location: registration_mail_form.php"); 17 exit(); 18}else{ 19 //POSTされたデータを変数に入れる 20 $mail = isset($_POST['mail']) ? $_POST['mail'] : NULL; 21 22 //メール入力判定 23 if ($mail == ''){ 24 $errors['mail'] = "メールが入力されていません。"; 25 }else{ 26 if(!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/", $mail)){ 27 $errors['mail_check'] = "メールアドレスの形式が正しくありません。"; 28 }else{ 29 if(empty($erros)){ 30 $query = $dbh->prepare('SELECT * FROM member WHERE mail = :mail limit 1'); 31 $query->execute(array(':mail' => $_POST['mail'])); 32 $result = $query->fetch(); 33 if($result > 0){ 34 $errors['mail'] = "すでに登録されたデータです。"; 35} 36} 37if(isset($errors)){ 38 $_SESSION['error'] = $errors; 39 header("Location: registration_mail_form.php"); 40 exit(); 41 } 42 43 44 45} 46} 47} 48 49------トークン確認省略 50 51$body = <<< EOM 52仮会員登録完了 53-----------会員登録完了メール省略 54 55<!DOCTYPE html> 56<html> 57<head> 58<title>メール確認画面</title> 59<meta charset="utf-8"> 60</head> 61<body> 62<h1>メール確認画面</h1> 63 64<?php if (count($errors) === 0): ?> 65 66 67<?php elseif(count($errors) > 0): ?> 68 69<?php 70foreach($errors as $value){ 71 echo "<p>".$value."</p>"; 72} 73?> 74 75<input type="button" value="戻る" onClick="history.back()"> 76 77<?php endif; ?> 78 79</body> 80</html>
###質問点
エラー発生時にエラーをどこに格納して(セッション?)
前の画面に戻り表示すれば宜しいでしょうか?
コードどう修正すれば宜しいでしょうか?
お教え下さいませ。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/08 05:18
2019/03/08 05:39 編集
2019/03/08 05:41
2019/03/08 05:45