ウェブ、ショウジン

アンケートフォーム入力項目のエラーチェック処理

2009-1-10
Category
PHP

自作エラーチェック関数を作成する

エラーチェックは多くの場面で行うので、共有できるように/libs/function.php 内に記述しておき、これをインクルードした上で必要に応じて呼び出せるようにしておく。

エラーチェックの関数を作成するにあたり以下の四点に注意する。

  • 未入力と文字数オーバーのエラーはどちらか一方のみ出力
  • 文字数チェックに注意
  • スペースのみ、改行のみといったものもエラーとする
  • mb_strlen関数を使って、マルチバイト文字の文字数を正しくカウントする

/libs/function.php

<?php
// どのページでも利用するものをinit()関数として作成
function init() {
	// MySmartyクラスの読み込み
	require_once($_SERVER["DOCUMENT_ROOT"]."/../libs/MySmarty.class.php");

	// セッション開始
	session_start();
	// 定期的にセッションIDを変更する指定
	session_regenerate_id(true);
}

// 性別の配列を返す関数
function getSexList() {
	$sex_value = array(
		"1" => "男性",
		"2" => "女性"
	);
	return $sex_value;
}

// 年代の配列を返す関数
function getAgeList() {
	$age_value = array(
		"1" => "10代",
		"2" => "20代",
		"3" => "30代",
		"4" => "40代",
		"5" => "50代",
		"6" => "60代"
	);
	return $age_value;
}

// 動物の配列を返す関数
function getAnimalList() {
	$animal_value = array(
		"1" => "イヌ",
		"2" => "ネコ",
		"3" => "ライオン",
		"4" => "キリン",
		"5" => "虎",
		"6" => "ウサギ",
		"7" => "猿",
		"8" => "ペンギン",
		"9" => "馬",
		"10" => "象"
	);
	return $animal_value;
}

// エラーチェックのための関数
function error_check($check_data) {

	// エラーメッセージを格納する配列変数を初期化
	$error_list = array();

	// 名前の入力チェック開始
	// isset関数で名前の変数が存在するか確認し、trim関数で空白文字を削除した状態で
	// 名前が空の場合のエラーメッセージをセット
	if (isset($check_data["name"]) &amp;&amp; trim($check_data["name"]) === "") {
		$error_list[] = "名前を入力してください。";
	} elseif (mb_strlen($check_data["name"]) > 100) {
		$error_list[] = "名前は100文字以内で入力してください。";
	}

	// 性別のエラーチェック開始
	// 性別の変数が存在しない場合はエラー
	if (!isset($check_data["sex"])) {
		// エラーメッセージをセット
		$error_list[] = "性別を選択してください。";
		// 性別の配列を取得
		// 取得した値が性別の配列のキーに存在しない場合のエラーメッセージをセット
	} elseif (!array_key_exists($check_data["sex"], getSexList())) {
		$error_list[] = "正しい性別を選択してください。";
	}

	// 年代のエラーチェック開始
	// 年代の変数が入力されている場合のみエラーチェックを行う
	if (isset($check_data["age"]) &amp;&amp; $check_data["age"] !== "") {
		// 年代の配列を取得し、取得した値が年代の配列のキーに存在しない場合のエラーメッセージをセット
		if (!array_key_exists($check_data["age"], getAgeList())) {
			$error_list[] = "正しい年代を選択してください。";
		}
	}

	// 好きな動物のエラーチェック開始
	// ひとつも選択しなかった場合のエラーメッセージをセット
	if (!isset($check_data["animal"]) || !is_array($check_data["animal"])) {
		$error_list[] = "お好きな動物を最低ひとつは選択してください。";
	} else {
		// foreachで展開
		foreach ($check_data["animal"] as $check_value) {
			// 好きな動物の配列を取得
			// 取得した値が動物の配列のキーに存在しない場合のエラーメッセージをセット
			if (!array_key_exists($check_value, getAnimalList())) {
				$error_list[] = "正しい動物を選択してください。";
				break;
			}
		}
	}

	// コメントのエラーチェック開始
	// コメントが空の場合のエラーメッセージをセット
	if (isset($check_data["comment"]) &amp;&amp; $check_data["comment"] === "") {
		$error_list[] = "コメントを入力してください。";
	// 空白文字を削除した上でコメントが空の場合のエラーメッセージをセット
	} elseif (trim($check_data["comment"]) === "") {
		$error_list[] = "コメントを入力してください。";
	// コメントの文字列が1000文字を超えていた時のエラーメッセージをセット
	} elseif (mb_strlen($check_data["comment"]) > 1000) {
		$error_list[] = "コメントは1000文字以内で入力してください。";
	}


	// 配列形式でエラーメッセージが格納されている変数を戻り値として返す
	// エラーがない場合はarray()が返る
	return $error_list;
}

?>

Categories

Tag Cloud

AdMob Android Apache centos CodeIgniter EC-CUBE facebookアプリ facebookページ feed Firefox Flash google googleanalytics htaccess iPad iPhone JavaScript lamp mobile nginx ogp pear php plugin rollover rss sendmail setting smarty ssh Titanium Mobile Titanium Studio tutorial ubuntu vim VirtualBox vmware vps Windows WordPress xampp youtube さくらインターネット アクセス解析 カスタム投稿