2013-07-07 4 views
1

У меня проблема с дезинфекцией. В AppController я использую утилиту Sanitization, но она не работает. Когда я хочу позвонить моему обновлению, он терпит неудачу из-за ' слэш в моем тексте ввода. Я использую CakePHP 2.3.6.CakePHP: обработка данных при обновлении

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']) 
); 

Любые идеи?

+0

Очень растерянный код. Почему вы используете '$ this-> User-> data [etc]', когда вы дезинфицировали массив '$ this-> request-> data' (где вы даже получаете' $ this-> User-> data'?)? 2) Нет необходимости вставлять 'App :: uses' внутри beforefilter, объявлять его сверху, утилиты lazyloaded. – Nunser

+0

Я настоятельно рекомендую не применять санитарию при сохранении. Правило: «оставить вход в одиночку, выход выхода». Поэтому просто удаляйте свой вывод с помощью 'h()' как задокументированный (также см. Новую заметку @ http://book.cakephp.org/2.0/en/core-utility-libraries/sanitize.html#Sanitize::html) и с тобой все будет в порядке. – mark

+0

Пожалуйста, проверьте мой ответ. Если это полезно, установите ответ как принятый или проголосуйте за него. В противном случае просто напишите, что отсутствует в ответе, или с какими проблемами вы сейчас сталкиваетесь, и я постараюсь помочь. –

ответ

0

Попробуйте использовать Sanitize :: escape() вместо Sanitize :: clean(). Как написано в the documentation,

дезинфицировать :: побег()

Делает строку SQL-безопасности.

Вы также можете перенести санитацию данных непосредственно на вызов метода updateAll(). Сделав это, вы узнаете, что метод updateAll() будет получать дезинфицированные данные, независимо от того, что произошло с этими данными в других частях вашего скрипта.

Смежные вопросы