|
|
|
| Заполняю текстовое поле с название "name".
Задача: нужно почистить переменную от хтмл кода:
function proverka ($x)
{
$x=wordwrap($x,35,' ',1);
$x=str_replace(" ",' ',$x);
$x=str_replace("&",'&',$x);
$x=str_replace(">",'>',$x);
$x=str_replace("<",'<',$x);
$x=str_replace("\"",'"',$x);
$x=preg_replace("/\n\n/",'<p>',$x);
$x=preg_replace("/\n/",'<br>',$x);
$x=preg_replace("/\\\$/",'$',$x);
$x=preg_replace("/\r/",'',$x);
$x=stripslashes($x);
$x=preg_replace("/\\\/",'\',$x);
$x=str_replace("\r\n","<br> ",$x);
$x=str_replace("\n\n",'<p>',$x);
$x=str_replace("\n",'<br> ',$x);
do {$x=str_replace("<br><br><br>","<br>",$x);} while (preg_match("/<br><br><br><br>/i",$x)); Вырезаем 3 и более ентеров
do {$x=str_replace(" "," ",$x);} while (preg_match("/ /i",$x));// Вырезаем 3 и более пробелов подряд
$x=str_replace("\t",' ',$x);
$x=str_replace("\r",' ',$x);
$x=str_replace(' ',' ',$x);
return $x;
}
$add_name=proverka($_POST['name']);
|
Записываем в БД переменную и видим, что хтмл код присутствует ((
Для текстовых областей (textarea) всё работает.
Проверка для текстовых полей (input) не работает, немогу понять почему? | |
|
|
|
|
|
|
|
для: exkluzive
(28.03.2009 в 17:38)
| | В текстовых полях не бывает переносов строки. А зачем так мудрено, strip_tags() не подходит? | |
|
|
|
|
|
|
|
для: Николай2357
(28.03.2009 в 21:25)
| | Не помагает. По прежнему в БД записывается хтмл код... (
$add_name=strip_tags($_POST['nam']); | |
|
|
|
|
|
|
|
для: exkluzive
(28.03.2009 в 23:28)
| | Что подразумевается под "хтмл код"? Если теги, то эта функция почистит всё от них, кроме того, что в стилях и в скриптах. А если нужно вывести всё как есть, то тогда htmlspecialchars(). | |
|
|
|
|
|
|
|
для: Николай2357
(29.03.2009 в 01:15)
| | A еще можно с помощью регулярных выражений запретить ввод каких-либо левых символов, сделать проверку.
if (ereg('[^a-zA-Zа-яА-Я0-9_]',$_POST ['name'])) {echo ('иди на х**!');} | |
|
|
|
|
|
|
|
для: Сергей1988
(29.03.2009 в 03:19)
| | А точку тогда юзер несможет поставить.
Можно так порезать:
<?
$name = preg_replace('/(<.+?>)/', NULL, addslashes($_POST['name']));
|
| |
|
|
|
|
|
|
|
для: exkluzive
(28.03.2009 в 23:28)
| | Надо внимательней быть... $_POST['name']; | |
|
|
|
|
|
|
|
для: Николай2357
(28.03.2009 в 21:25)
| | Ё маё !!! Была проблема с хостом, изменения не работали, теперь всё работает! $add_name=strip_tags($_POST['name']); - как раз то, что нужно. Огромное спасибо всем, кто принимал участие в обсуждении темы. Я узнал о других, более простых способах обезопаситься от вводимого юзером хтмл кода )) | |
|
|
|