PHPでサニタイズする関数!

Posted in PHP

こんにちわ、isamです。

今日はフォームの値をサニタイズする自作関数の紹介!
使い方はブロックを参照!

	/**
	 * 配列を再帰的にサニタイズフィルタリング
	 *
	 * <code>
	 * $filter_func = array(
	 *	 'trim' => array("%%_val_%%"),
	 *	 'htmlspecialchars' => array("%%_val_%%", ENTQUTOES),
	 *	 'str_replace' => array("\0", "", "%%_val_%%")
	 * );
	 *
	 * $key_func = array(
	 *     'id' => array("intval" => array("%%_val_%%")),
	 *     'pid' => array("intval" => array("%%_val_%%"))
	 * );
	 *
	 * $ignore_keys = array("test");
	 *
	 * querySanitaizeFilter($_REQUEST, $filter_func, $key_func, $ignore_keys);
	 * </code>
	 *
	 * @param	&$request		サニタイズフィルタリングを適用する配列
	 * @param	$filter_func	サニタイズフィルタリング用関数配列
	 * @param	$key_func		サニタイズフィルタリングを個別にしたキーと関数の配列
	 * @param	$ignore_keys	サニタイズフィルタリングを適用しないキー
	 * @void
	 */
	function querySanitaizeFilter(&$request, $filter_func, $key_func = array(), $ignore_keys = array()) {
		foreach ($request as $key => $val) {
			if (is_array($val)){
				querySanitaizeFilter($request[$key], $filter_func);
			} else {
				foreach ($filter_func as $func => $params) {
					$new_params = array();
					foreach ($params as $param) {
						if ("%%_val_%%" == $param) {
							$param = $val;
						}
						$new_params[] = $param;
					}
					if (in_array($key, $ignore_keys)) {
						continue;
					}
					$request[$key] = call_user_func_array($func, $new_params);
				}
				foreach ($key_func as $key => $val) {
					foreach ($val as $func => $params) {
						$new_params = array();
						foreach ($params as $param) {
							if ("%%_val_%%" == $param) {
								$param = $request[$key];
							}
							$new_params[] = $param;
						}
						$request[$key] = call_user_func_array($func, $new_params);
					}
				}
			}
		}
	}
Posted by isam   @   24 5月 2010

Like this post? Share it!

RSS Digg Twitter StumbleUpon Delicious Technorati

0 Comments

No comments yet. Be the first to leave a comment !
Leave a Comment

Name

Email

Website

Previous Post
«
Next Post
»
Powered by Wordpress   |   Lunated designed by ZenVerse