[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запрет символов.
715kg
Здравствуйте. Подскажите как запретить все символы кроме (Точки - Запятой - Тире- Двое точие Буквы от А до Я Англ Рус И цифры)

А всю остальную белеберду типа % $ # )( + = / | \ } ] { [ ^ @ * Запретить.

if (!$comments) $error['comments'] = true;
if (!preg_match("`^[0-9A-Za-z\.]{1}[0-9A-Za-z\.]{5,}$i` ", $server)) $error['server'] = true;


Как правильно [0-9A-Za-z\.]{1}[0-9A-Za-z\.]{5,} Выставить?

А то Если даже вводить како нить HTML код или php код, он его прямиком в базу пропускает. А это не есть хорошо.



Спустя 4 минуты, 39 секунд (19.07.2012 - 23:20) Игорь_Vasinsky написал(а):
strip_tags()
htmlspecialchars()

#[-0-9a-zа-яё,\.\:]#i

u - if unicode

Спустя 2 минуты, 19 секунд (19.07.2012 - 23:22) 715kg написал(а):
Как вот этим воспользоваться?

strip_tags()
htmlspecialchars()
u - if unicode

Спустя 3 минуты, 2 секунды (19.07.2012 - 23:25) Игорь_Vasinsky написал(а):
Цитата
strip_tags()
htmlspecialchars()

это 2 штатные функции php - глянь мануал

это паттерн лоя preg_match()
Цитата
#[-0-9a-zа-яё,\.\:]#i


это модификатор для паттерна - если работаешь в utf-8
u - if unicode

i - модификатор - который говорит паттерну забить на регистр символов

Спустя 23 минуты, 57 секунд (19.07.2012 - 23:49) 715kg написал(а):
Сделал. Но если пишешь так Google bots Хур сервер Он не пропускает.
В чем проблема?

Спустя 1 минута, 9 секунд (19.07.2012 - 23:50) Игорь_Vasinsky написал(а):
\s - в группу символов добавь и модификатор s допиши. - это пробел.

Спустя 3 минуты, 38 секунд (19.07.2012 - 23:54) 715kg написал(а):
В этом деле я вообще бестолковый((( Что не так, подскажите пожалуйста.

if (!preg_match("`^[-0-9a-zа-яё-s,\.\s\:]$i` ", $comments)) $error['comments'] = true;

Спустя 3 минуты, 35 секунд (19.07.2012 - 23:57) Игорь_Vasinsky написал(а):
if (!preg_match("#^[-0-9a-zа-яё,\.\s\:]{5,}$#i", $comments)) $error['comments'] = true;

Спустя 5 минут, 12 секунд (20.07.2012 - 00:03) 715kg написал(а):
Все-равно не пропускает. Вызывает $error['comments']

Спустя 3 минуты, 10 секунд (20.07.2012 - 00:06) Игорь_Vasinsky написал(а):
if (!preg_match("#^[-0-9a-zа-яё,\.\s\:]{5,}$#is", $comments)) $error['comments'] = true;

Спустя 8 минут, 19 секунд (20.07.2012 - 00:14) 715kg написал(а):
Пропускает. Но если в слове есть заглавная буква, то опять же не пропускает.

Допустим пишу в поле слово Серве

То так же не пропускает.

Спустя 3 минуты, 17 секунд (20.07.2012 - 00:17) Игорь_Vasinsky написал(а):
господи...

if (!preg_match("#^[-0-9a-zа-яё,\.\s\:]{5,}$#isu", $comments)) $error['comments'] = true;

Спустя 4 минуты, 59 секунд (20.07.2012 - 00:22) 715kg написал(а):
Извини пожалуйста. Просто для меня это лес.
Вот в чем, так по этой части знание не имею.

Кстате так тоже не работает. Опять же не пропускает.

Спустя 20 минут, 13 секунд (20.07.2012 - 00:42) Игорь_Vasinsky написал(а):
странно.. там же i стоит...

Спустя 46 секунд (20.07.2012 - 00:43) Игорь_Vasinsky написал(а):
if (!preg_match("#^[-0-9A-zА-яё,\.\s\:]{5,}$#isu", $comments)) $error['comments'] = true;

Спустя 1 час, 33 минуты, 50 секунд (20.07.2012 - 02:17) FatCat написал(а):
Цитата (715kg @ 20.07.2012 - 00:15)
белеберду типа % $ # )( + = / | \ } ] { [ ^ @ * Запретить

Если список белиберды конечен и известен, простым перечислением.


Цитата (Игорь_Vasinsky @ 20.07.2012 - 00:20)
#[-0-9a-zа-яё,\.\:]#i

#[:alnum:,\.\:\-_]#i

Спустя 5 часов, 59 минут, 10 секунд (20.07.2012 - 08:16) Игорь_Vasinsky написал(а):
да я для наглядности ему.

Спустя 4 часа, 36 минут, 22 секунды (20.07.2012 - 12:53) 715kg написал(а):
Я видимо не так рассказал что мне нужно, по этому вы тоже не можете понять. Мне это надо для комментариев.

Чтобы можно было писать любое слово, хоть в нижнем регистре хоть в верхнем. Тавить точки запятые. Но нужно ограничить символы № @ > < / Для того чтобы нельзя было ввести HTML или PHP код. Так как ХТМЛ содержит < а пхп $ @

Спустя 4 часа, 26 минут, 48 секунд (20.07.2012 - 17:19) FatCat написал(а):
Цитата (715kg @ 20.07.2012 - 13:53)
нужно ограничить символы № @ > < /

$deny = array(
'<'=>'& lt;',
'>'=>'& gt;',
'№'=>'No',
'@'=>'[dog]',
'/'=>'& #47;'
);
foreach($deny as $k=>$v)$_POST['Post'] = str_replace($k,$v,$_POST['Post']);

Пробелы после амперсандов нужно убрать.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.