1

消毒に問題があります。AppController で Sanitization ユーティリティを使用していますが、機能しません。update を呼び出したいとき 入力テキストの'スラッシュが原因で失敗します。CakePHP 2.3.6 を使用しています。

function beforeFilter(){
    if(!empty($this->data)){
        App::uses('Sanitize', 'Utility');
        $this->request->data = Sanitize::clean($this->data, array('remove_html'=>true,'encode'=>false,'unicode'=>false,'backslash'=>true, 'escape'=>false));
    }
}

コントローラーコード:

$this->ClientProfile->updateAll(
    array('ClientProfile.location'=>"'".$this->User->data['ClientProfile']['location']."'"),
    array('ClientProfile.user_id'=>$userdata['id'])
);

何か案は?

4

1 に答える 1

0

Sanitize::clean() の代わりに Sanitize::escape() を使用してみてください。ドキュメントに書いてある通り、

サニタイズ::エスケープ()

文字列を SQL セーフにします。

また、データ サニタイズを updateAll() メソッド呼び出しに直接移動することもできます。これを行うことで、スクリプトの他の部分でこのデータに何が起こったとしても、 updateAll() メソッドがサニタイズされたデータを取得することがわかります。

于 2013-10-03T18:35:37.560 に答える