Home PageКаталог Изменения НовыеКомментарии Пользователи Регистрация
CakePHP: Manual/CommonTasks/DataSanitization ...

Чистка данных


CakePHP класс Sanitize может быть использован для освобождения, подтвержденных пользователем данных, от злоумышленной и другой нежелательной информации. Sanitize – это внутренняя библиотека, так что она может использоваться в любом месте вашего кода, но, возможно, лучше всего в контроллерах и моделях.


Все, что вам необходимо сделать – это подключить библиотеку Sanitize:


<? 
   App
::import('Sanitize'); 
?>


Подключив библиотеку, вы можете выполнять к ней статические вызовы.



paranoid


paranoid(string $string, array $allowedChars);

Эта функция уберет из передаваемой строки $string, все не буквенно-цифровые символы. Функция проигнорирует определенные символы, переданные в массиве $allowedChars.


<?
$badString 
";:<script><html><   // >@@#";
echo 
Sanitize::paranoid($badString);
// вывод: scripthtml
echo Sanitize::paranoid($badString, array(' ''@'));
// вывод: scripthtml    @@

?>



html


html(string $string, boolean $remove = false)

Этот метод подготовит, подтвержденные пользователем данные, для вывода внутри HTML. Это особенно полезно, если вы не хотите, чтобы пользователи были способны разрушить ваши шаблоны или вставить изображения или скрипты в ваши HTML страницы. Если опция $remove установлена в true, то обнаруженное HTML содержимое будет удалено, а не отрисовано, как часть HTML кода.


<?
$badString 
'<font size="99" color="#FF0000">HEY</font><script>...</script>';
echo 
Sanitize::html($badString);
// вывод: &lt;font size=&quot;99&quot; color=&quot;#FF0000&quot;&gt;HEY&lt;/font&gt;&lt;script&gt;...&lt;/script&gt;
echo Sanitize::html($badStringtrue);
// вывод: HEY...
?>



escape


escape(string $string, string $connection)

Используется для экранирования SQL выражений, добавлением слешей, в зависимости от системной настройки magic_quotes_gpc. $connection – это имя базы данных для которой экранируется строка (имя совпадает с именем в файле app/config/database.php).



clean


Sanitize::clean(mixed $data, mixed $options)

Эта функция очень сильна :), многозадачный очиститель, предназначенный для работы с целыми массивами (например $this->data). Функция принимает массив (или строку) и возвращает очищенную версию. Следующие очищающие действия выполняются для каждого элемента в массиве (рекурсивно):



Аргумент $options может быть или массивом или строкой. Когда передается строка, то $options – это имя соединения с базой данных. Если же передается массив, то он может быть объединен со следующими опциями:



Использование clean() с опциями выглядит таким образом:


<?
   Sanitize
::clean($this->data, array('encode' => false));
?>


<< Валидация данных из контроллера | Обработка ошибок >>


 
Комментарии
Странно, методы escape и clean не работают, пишет
“Fatal error: Class 'ConnectionManager' not found in ...."
Как я понимаю это достаточно важная библиотека, но не все методы работают как нужно
fixation.choosing.volia.net (2010-11-05 07:37:27)
:) Все оказалось достаточно просто, нужно было создать таблицу для контроллера
fixation.choosing.volia.net (2010-11-05 07:51:33)
Добавить комментарий:

Файлы [Скрыть файлы/форму]