Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Покритикуйте функцию


Автор: YURIC 9.8.2011, 19:04
Здравствуйте, покритикуйте, пожалуйста, функцию чистки входящих данных (POST,GET);


Код

function FilterStringText($str){
    return preg_replace("/[^0-9a-z\n\~\!\@\#\№\$\%\^\+\*\&\[\]\(\)\:\; \,\.\/\_\-]/i","",htmlspecialchars(htmlspecialchars_decode(urldecode($str))));
}


Смысл фильтрации - предотвратить xss, sql инъекции и вычистить любые не английские буквы. 

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

Чем плохо использование этой функции?

Автор: Evghenusi 9.8.2011, 20:31
"0-9a-z" + "\_" = "\w"

Автор: YURIC 10.8.2011, 12:44
Код

function FilterStringText($str){
    return preg_replace("/[^\w\n\~\!\@\#\№\$\%\^\+\*\&\[\]\(\)\:\; \,\.\/\-]/i","",htmlspecialchars(htmlspecialchars_decode(urldecode($str))));
}


не работает.

Автор: Evghenusi 10.8.2011, 14:12
у меня регулярка работает {[^\w\n\s~!@#№$%^+*&\[\]():;,./-]+}i

Цитата(YURIC @  10.8.2011,  12:44 Найти цитируемый пост)
\; \,
это у вас там типа пробел добавлен?  smile 

Автор: YURIC 15.8.2011, 02:15
Цитата(Evghenusi @  10.8.2011,  14:12 Найти цитируемый пост)
это у вас там типа пробел добавлен?


Это - издержки копипасты. 
Пробела нет.

За Вашу регулярку - спасибо.

Автор: Evghenusi 15.8.2011, 11:39
Цитата(YURIC @  15.8.2011,  02:15 Найти цитируемый пост)
Это - издержки копипасты. 
Пробела нет.
тогда уберите \s

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)