現在、CakePHP2.4を使ってWebアプリ開発をしています。
Webアプリ内ではユーザーが入力された値を受け取って、
処理をすることがありますが、
皆様はどのようにして値を受け取りますか?
何も考えなければCakePHPでは
以下のような形で受け取っています。
php
1$name = $this->request->data['name']
受け取った値はデータベースに保存され、
その後、必要に応じてデータベースから取得、
ユーザーの画面に表示されるというイメージです。
もちろん、受け取り方はケースバイケースというのは前提ですが、
それぞれ基本的な取得方法は決めているかと思います。
私の場合は以下のような受け取り方をしています。
実際にはloadModelメソッドなどが別に用意されています。
Userモデルで定義しているバリデーションを通過するかどうかをチェックし、
バリデーションを通過しなければエラーを返しています。
(エラー処理はちょっと適当に書いています)
モデル内で定義しているバリデーションはホワイトリスト方式です。
自由に記述できるような項目については上限文字数のみチェックしています。
php
1$name = $this->checkVariables( 'User', 'name', $this->request->data['name'] ); 2 3public function checkVariables( $model, $dataName, $data ){ 4 5 $this->Common->loadModel($model); //指定したモデルを使えるように読み込む 6 $this->Common->$model->set(array( $dataName => $data )); //バリデーションするデータをセット 7 if ( $this->Common->$model->validates() ) { 8 return $data; 9 } 10 11 //エラー処理 12 header('HTTP', true, 500 ); 13 echo "不正な入力値"; 14 exit; 15} 16
こういった処理を書いておき利用しているのですが、
他の方がどういう感じで処理しているのかが分かりません。
文字エンコーディングチェックも入れた方がいいのでしょうか。
画面に表示する際にはh()でエスケープさせています。
CakePHPの独自の受け取り方などがあるのでしょうか。
他の方がどのように値を取得しているのかお聞きできれば幸いです。
ネット上にもいろいろサンプルがあったりするのですが、
たいていは値取得の部分などは適当に記述されていることが多く、
はっきりとした回答が分かりにくいです。
もちろん、完全に安全ということではなく、
最低限こういう受け取り方はしないとダメでしょ、
というようなことで問題ないです。
もし、これだけでは回答ができなければ、
追加で何が必要か教えていただけますと幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/16 03:10
退会済みユーザー
2015/11/16 03:33
2015/11/16 05:50