どうも、isamです。
前回のサニタイズに引き続き、今回はフォームの入力値の入力チェックを簡潔化する関数を紹介します。
使い方はブロックを参照!
/**
* フォームの値をルールに従い走査しエラーがあった場合、エラーキー配列を返す
*
* <code>
* $key_func = array(
* 'id' => array("is_numeric" => array("%%_val_%%", array('error' => "数字以外の文字が入力されています"))),
* 'pid' => array("is_numeric" => array("%%_val_%%", array('error' => "数字以外の文字が入力されています")))
* );
*
* $error = queryValidateCheck($_REQUEST, $key_func);
* </code>
*
* @param $request バリデイトを適用する配列
* @param $key_func バリデイトをのルールを定義しているキーと関数の配列
* @return array
*/
function queryValidateCheck($request, $key_func = array()) {
$error = array();
foreach ($request as $key => $val) {
if (is_array($val)){
if (isset($key_func[$key])) {
$error[$key] = queryValidateCheck($request[$key], $key_func[$key]);
}
} else {
if (isset($key_func[$key])) {
foreach ($key_func[$key] as $func => $params) {
$new_params = array();
foreach ($params as $param) {
if (!is_array($param)) {
if ("%%_val_%%" == $param) {
$param = $val;
}
$new_params[] = $param;
} else {
$error_str = $param['error'];
}
}
if (!call_user_func_array($func, $new_params)) {
$error[$key] = $error_str;
}
}
}
}
}
return $error;
}