[PHP-users 31475] Re: value属性への変数展開

Ryo Suyama ryo @ spais.jp
2007年 2月 17日 (土) 15:10:36 JST


須山です。

ちょっと内容を省きすぎて伝わってないっぽいのでやぶへびかも知れませんが一応補足を。

$valid_post = valid($_POST); //パラメータの検証を行い無害化したデータを返す
echo '<input type="text" value="'.$valid_post['username'].'"name="username" />"';
echo '<input type="text" value="'.$valid_post['job'].'"name="job" />"';
echo '<input type="text" value="'.$valid_post['hobby'].'"name="hobby" />"';

関数 valid() は以下の様な感じの実装です。

function valid($parameters){
	$result = array();
	foreach($parameters as $key => $parameter){
		switch($key){
			case 'username':
			//nameがusernameの要素に対する検証ルール
			$result[$key] = $parameter;
			break;

			case 'job':
			//nameがjobの要素に対する検証ルール
			$result[$key] = $parameter;
			break;

			case 'hobby':
			//nameがhobbyの要素に対する検証ルール
			$result[$key] = $parameter;
			break;
		}
	}
	return $result;
}

> GETやPOSTで渡されたデータはそもそもどんな用途に使用するかファイル
> ごとに違うので。

もちろん valid はアプリケーションごとに、リクエストパラメータが送られる
スクリプトごとに実装を変える必要はありますよね。

(面倒くさがりな)僕の場合はアプリケーション全体の構造のシンプルさを出来
るだけ壊したくないので、検証用メソッドやプリペアドステートメントを作るた
めのメソッドや、禁則処理メソッドは検証用クラスで実装し、出力系のスクリプ
トでは検証メソッドなどの処理系はなるべく排除する事で、スクリプト自体の見
通しをよくする事が第一と考えています。
この場合、前述の valid() なんかは例えば valid::validXXXFormPost() なんて
メソッドに当たります。

それに、入力フォームに限って言えば input 要素の name 属性などは似たりよっ
たりですしね。ソースの使いまわしも出来ると。

#実はこういうお話がしたくてこの ML に入ってます。

┌─┬─┬─┬┬─┐
│─┤─│─├┤─┤
├─│┌┤││├─│
├─┴┘└┴┴┴─┤
│    須山  亮    │
│  ryo @ spais.jp  │
│http://spais.jp/│
└────────┘



PHP-users メーリングリストの案内