はじめに

最近、PHPを使って問い合わせフォームを作りました。その際に参考にさせて頂いたサイト様を紹介させて頂きます。

Contents

「教えてマリオ」さんで作成の1から10まで

「教えてマリオ」さんの、「お問い合わせフォームの作り方⑦」では、問い合わせフォームの作り方が1から10まで説明されています。私も非常に参考にさせて頂きました。
この手順を真似すれば、ある程度初心者でも問い合わせフォームを作れてしまいます。すごいですね。
そして、もう一点素晴らしいところは、「お問い合わせフォームの作り方①」から順に、PHPの基本的なことも学べるので、PHP初心者でも安心な点です。

こちらで作成できるフォームでの問い合わせの流れとしましては、

入力→内容確認ボタンを押す→確認ページに移行→確認ページ:エラーがあれば、エラー内容と入力画面に戻るボタンを表示、なければ入力画面に戻るボタンと送信ボタンを表示→送信

という感じです。

ここで、少しだけ私が作りたい流れと違うことに気付きました。
私が作りたかったのは、

入力→内容確認ボタンを押す→エラーがあれば、エラー内容を入力画面に表示、なければ内容確認画面に移行、入力画面に戻るボタンと送信ボタンを表示→送信

という流れです。
つまり、エラーメッセージを内容確認画面に出力するのではなく、入力画面に表示させたかったのです。
そのほうがユーザの操作数が減るからいいかなと。

そこで参考にさせて頂いたのが、次のサイト様です。

「web帳」さんの記事にある要素を取り入れる

「web帳」さんの「PHP 会員登録フォーム エラーメッセージ表示」という記事では、先ほど述べたような、エラーがあれば先のページに進まず、エラーメッセージを入力画面に出力させ、なければ入力内容確認画面に遷移するという方法が説明されています。
こちらの記事を参考にさせて頂き、希望通りの問い合わせの流れを実現しました。

具体的には、「教えてマリオ」さんの方法にある確認画面でのエラーチェック(※1)を丸々削除し、「web帳」さんの方法(入力画面のファイルの冒頭にPHPでエラーチェックの文を書く)(※2)を導入しました。

※1「教えてマリオ」さんより、エラーチェック文

<div id="wrap">
    <h3>お問い合わせフォーム・エラーチェック・確認ページ</h3>
    <?PHP 

	//すべて受信
	extract($_POST);
	
	//エラー用FLAG未記入の場合1にする
	$flag=0;
	
	//名前チェック
	if(empty($namae)){
				
		echo '<p><span>必須</span>お名前を入力してください。</p><br />';
		$flag=1;
				
	}
	
	//メールアドレスチェック
	if(empty($mail1)){
				
		echo '<p><span>必須</span>メールアドレスを入力してください。</p><br />';
		$flag=1;
				
	}
	
	//メールアドレス確認用チェック
	if(empty($mail2)){
				
		echo '<p><span>必須</span>メールアドレス確認用を入力してください。</p><br />';
		$flag=1;
				
	}
	//メールアドレスとメールアドレス確認用が同じかチェック
	elseif($mail1!=$mail2){
				
		echo '<p><span>必須</span>メールアドレスが一致していません。</p><br />';
		$flag=1;
				
	}
	
	//お問い合わせ内容チェック
	if(empty($naiyou)){
				
		echo '<p><span>必須</span>お問い合わせ内容を入力してください。</p><br />';
		$flag=1;
				
	}
	
	//エラーの場合(上記で未記入の場合flagを1にしているので)すなわちflagが1の場合戻るボタンを作成
	if($flag==1){
				
		echo '<div class="button"><input type="button" onclick="self.history.back()" value="入力画面に戻る"/></div>';
								
	}
	
	?>

※2「web帳」さんより、エラーチェック文

<?php
session_start();
if(!empty($_POST)){
//エラー項目の確認
//ニックネームが空の場合
if($_POST['name'] == ''){
$error['name'] = 'blank';
}
//メールアドレスが空の場合
if($_POST['email'] == ''){
$error['email'] = 'blank';
}
//パスワードが6文字以下の場合
if(strlen($_POST['password']) < 6){
$error['password'] = 'length';
}
//パスワードが空の場合
if($_POST['password'] == ''){
$error['password'] = 'blank';
}
//エラーがない場合は確認ページへページ遷移
if(empty($error)){
$_SESSION['join'] = $_POST;
header('Location: check.php');
}
}
?>

2サイト様ともに非常に分かりやすく、参考になりました。ありがとうございます。