Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обработка данных перед помещением в базу данных и при выводе из неё
 
 автор: denser   (23.05.2011 в 17:26)   письмо автору
 
 

>PS Кстати, перед выводом значений вроде $_POST['user'] в окно браузера их лучше всегда обрабатывать при помощи функции htmlspecialchars().

Не совсем понял, зачем нужно прогонять массив $_POST['user'] функцией htmlspecialchars() при выводе значения <input type="text">?
Перед занесением в БД все равно же нужно будет прогнать текст через htmlspecialchars() и mysql_real_escape_string().

В случае, если в $_POST['user'] подставляется значение из COOKIE и в значении есть HTML-символ, то он будет экранироваться. При этом, экранированный символ в массиве $_POST['user'] сохраняется в COOKIE и при повторном выводе, произойдет повторное экранирование.

Например, имя пользователя Nilil's. Он отправляет комментарий, при этом в куки записывается следующее: Nilil\'s и это значение выводится в $_POST['user']. Затем пользователь еще раз оставляет комментарий и имя из Nilil\'s превращается в Nilil\\\'s.
Получается бесконечное экранирование html-символов.

Я правильно мыслю?

  Ответить  
 
 автор: Valick   (23.05.2011 в 17:35)   письмо автору
 
   для: denser   (23.05.2011 в 17:26)
 

при записи в базу htmlspecialchars() не нужно использовать

  Ответить  
 
 автор: denser   (23.05.2011 в 17:38)   письмо автору
 
   для: Valick   (23.05.2011 в 17:35)
 

Только при выводе на страницу? А если при записи в БД, то это будет считаться плохим программированием?

  Ответить  
 
 автор: Valick   (23.05.2011 в 17:58)   письмо автору
 
   для: denser   (23.05.2011 в 17:38)
 

ну это примерно то же самое что наждачку взамест туалетной бумаги использовать :)
после выборки из базы и перед выводом в браузер много чего может скрипт наделать с текстом, аштмлспешалчарс добавит Вам головной боли
так что лучше не мешать котлеты с мухами раньше времени :)

  Ответить  
 
 автор: cheops   (23.05.2011 в 18:06)   письмо автору
 
   для: denser   (23.05.2011 в 17:38)
 

>Только при выводе на страницу? А если при записи в БД, то это будет считаться плохим
>программированием?
Не удобно будет, вам возможно захочется отредактировать код, а в базе будут уже HTML-безопасное представление, если вы добавляете какой-то текст, обрабатывать при редактировании текст при помощи htmlspecialchars() или нет? Если обработаете, все предыдущие HTML-представления будут искажены, если не обработаете - новые HTML-представления не будут обработаны. В общем лучше в базу данных помещать оригинальный текст, а его обработку осуществлять при выводе из базы данных.

  Ответить  
 
 автор: cheops   (23.05.2011 в 18:17)   письмо автору
 
   для: denser   (23.05.2011 в 17:26)
 

>В случае, если в $_POST['user'] подставляется значение из COOKIE и в значении есть HTML-
>символ, то он будет экранироваться. При этом, экранированный символ в массиве $_POST['user']
>сохраняется в COOKIE и при повторном выводе, произойдет повторное экранирование.
Так произойдет, если у вас включен режим магических кавычек. Поэтому перед экранированием необходимо обязательно проверять включен он у вас на сервере или нет
<?php
   
if (!get_magic_quotes_gpc())
   {
     
$_POST['user'] = mysql_escape_string($_POST['user']);
   }
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования