Фильтрация данных + вывод + сохранение
1.
ШЕДЕВР (19.02.2013 / 21:14)
Привет! Казалось бы заезженная тема "ФИЛЬТРАЦИЯ ДАННЫХ", и вроде как бы она легкая, ведь выполняется всего несколькими функциями чистки. Но всё же я столкнулся со сложностью. И хотел бы чтобы меня направили.
Пишу маленькую админ панель по обновлению простых текстовых записей на сайте. Так вот. ЧТо получается:
Администратор входит в панель и в поле textarea пишет текст, и например вставляет ссылку с (') или ("), и при добавление в базу добавляются \ либо вообще выходит ошибка. Хотелось бы узнать, как именно фильровать ТЕКСТОВЫЕ ДАННЫЕ где могут находится такие спецсимволы?
Далее, как вывести эти данные на сайт чтобы была правильная корректировка?
Далее, как вывести эти данные в панельку при очередном обновлении.
У меня как то не получается это связать. А в интернете только про фильтрацию, про вывод и пересохранение ничего не нашел.
2.
Изнаур (19.02.2013 / 21:36)
Далее, как вывести эти данные на сайт чтобы была правильная корректировка?
т.е при выводе без \?
stripslashes($text)
Далее, как вывести эти данные в панельку при очередном обновлении.
не понял
3.
ШЕДЕВР (19.02.2013 / 21:39)
2, а как до? опиши пожалуйста все действия.
Вот человек ввёл данные, как их перед добавлением в базу отфильтровать?
Далее, при выводе на сайт, как вывести данные из базы?
4.
Изнаур (19.02.2013 / 21:48)
Moto-Moto (19 Февраля 2013 / 21:39)
2, а как до? опиши пожалуйста все действия.
Вот человек ввёл данные, как их перед добавлением в базу отфильтровать?
Далее, при выводе на сайт, как вывести данные из базы?
ты с Mysql работаешь?
<?
htmlspecialchars(mysql_real_escape_string($text));
//записываешь в БД
?>
в файле где выводишь
<?
$text = mysql_fetch_assoc(mysql_query(/*запрос куда нужно*/))
echo stripslashes($text['имя поля']);
?>
Но лучше спроси у кого опыта больше,я даже не уверен что правильно тебя понял
5.
Владислав (19.02.2013 / 21:51)
какой драйвер ты юзаешь для бд?
6.
ШЕДЕВР (19.02.2013 / 21:55)
4, и всё??? $text=htmlspecialchars(mysql_real_escape_string($text)); потом $text в insert?
5, как понять ДРАЙВЕР?
7.
Изнаур (19.02.2013 / 21:58)
6.
Moto-Moto, htmlspecialchars защита от XSS mysql_real_escape_string от Sql Injection,что ещё?)да потом в insert
8.
Тимофей (19.02.2013 / 22:20)
Moto-Moto (19 Февраля 2013 / 19:55)
4, и всё??? $text=htmlspecialchars(mysql_real_escape_string($text)); потом $text в insert?
5, как понять ДРАЙВЕР?
драйвер...
MySQL/MySQLi/PDO/SQLite
9.
Кевин Митник (19.02.2013 / 22:25)
ну вообще-то правильнее фильтровать все случаи особенными методами, а не подгонять под один шаблон. Сначала ставим задачу - потом решаем. Если у нас есть, к примеру, $text, которая из $_POST['text'], то нам нужно для защиты от XSS защититься. Обрабатываем htmlentities(), причем указываем в параметрах(второй аргумент) ENT_QUOTES, что будет дополнительно превращать одинарные и двойные кавычки в их сущности. Третий аргумент - кодировка. Все. Но это годиться только в том случае, который я описал выше.
Добавлено через 01:02 сек.
А насчет SQL - injection не стоит париться, если юзаем PDO. Там все учтено. Фильтруем только на предмет XSS
10.
ШЕДЕВР (19.02.2013 / 23:27)
Покажи реальный пример. Это же всего несколько строк....
$_POST[TEXT] получаем с формы... Как его фильтровать чтобы записать в базу данных MYSQL?
Далее, как вывести с базы данных, используя какую функцию или напрямую просто echo $text;?
Подключения к бд и т.д. не нужно, конкретно ДО записи как фильтруем и при выводе как выводим?
11.
Петр (20.02.2013 / 07:22)
Если даже без фильтрации появляются \' и \", значит, включены magic quotes. Если не планируется никаких манипуляций со строкой можно так и оставить, иначе нужно убрать экранирование, потом, допустим, применить htmlspecialchars, а потом использовать addslashes или mysql_real_escape_string; а при выводе просто выводить.
URL:
https://visavi.net/topics/36789