Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Фильтрация переменной.
Форумы портала PHP.SU » » Если скрипт не работает » Фильтрация переменной.

Страниц (1): [1]
 

1. Александерр - 20 Мая, 2015 - 12:06:22 - перейти к сообщению
Здравствуйте,я только начал изучать php и не могу понять одну штуку с фильтрацией переменной. Хочу очистить логин из формы который записал в переменную login от пробелов этим кодом:

Но записывается он в базу все равно с пробелами. Где моя тут ошибка? И второй вопрос отфильтровать пробелы этого мало? нужно отфильтровать всякие скобки,запятые?
(Добавление)
-------------------------------- -------------------------------- --------------

ВСЕ Понял=)
Улыбка Так нужно: ( что меняем, на что меняем)
Я нуб=)
А как все эти знаки почистить из логина?
2. Panoptik - 20 Мая, 2015 - 12:31:24 - перейти к сообщению
3. Александерр - 20 Мая, 2015 - 12:41:23 - перейти к сообщению
Так не корректная фильтрация получается пишу в форму логина <a? d .m i' n2>
а в базу записывается lamn, а хотелось бы что бы записывался логин admin2
(Добавление)
Panoptik пишет:

Тоже не прокатывает в базу записывается как ltadmin2gt а должно admin2
(Добавление)
А так можно сделать? надежно будет?
PHP:
скопировать код в буфер обмена

Плюс в форме ввода текста поставить ограничение на длину символов + уничтожение пробелов.
4. Александерр - 20 Мая, 2015 - 15:23:37 - перейти к сообщению
Такая фильтрация подойдет?


PHP:
скопировать код в буфер обмена
  1. $login = stripslashes($login);
  2. $login = htmlspecialchars($login);
  3.  
  4. $login=str_replace("<",'',$login);
  5. $login=str_replace(">",'',$login);
  6. $login=str_replace("+",'',$login);
  7. $login=str_replace("'",'',$login);
  8. $login=str_replace(" ",'',$login);
5. Ts.Saltan - 20 Мая, 2015 - 15:35:28 - перейти к сообщению
После функции htmlspecialchars в логине не будет символов < > ' "
бессмысленно дальше заменять их на другие символы

Проверка логина заключается в том, чтобы разрешить или запретить пользователю использовать этот логин. А что-то заменять, фильтровать автоматически может привести к не совсем ожидаемому результату. ИМХО, пусть юзер сам позаботится, чтоб логин соответствовал требованиям.

И вообще, грамотная фильтрация данных при занесении или выборке их из базы данных делает подобные фильтрации бесполезными, ибо никакого вреда это не нанесёт.
(Добавление)
и еще, str_replace может принять массивы в качестве первых двух аргументов
6. Александерр - 20 Мая, 2015 - 15:39:07 - перейти к сообщению
Ts.Saltan пишет:
После функции htmlspecialchars в логине не будет символов < > ' "
бессмысленно дальше заменять их на другие символы

Проверка логина заключается в том, чтобы разрешить или запретить пользователю использовать этот логин. А что-то заменять, фильтровать автоматически может привести к не совсем ожидаемому результату. ИМХО, пусть юзер сам позаботится, чтоб логин соответствовал требованиям.

И вообще, грамотная фильтрация данных при занесении или выборке их из базы данных делает подобные фильтрации бесполезными, ибо никакого вреда это не нанесёт.
(Добавление)
и еще, str_replace может принять массивы в качестве первых двух аргументов


Хотите сказать,что лучше сделать так?
PHP:
скопировать код в буфер обмена
  1. if (!preg_match("/^[А-Яа-яЁёa-zA-Z0-9_\-\!\~\.@ ]+$/",$login)){ $error=1;
  2.         $msg = "<b>Имя</b> содержит запрещенные символы. Разрешены рус. или англ. буквы обоих регистров, цифры, символы: пробел, _, !, ~, -, .,@ <br>\n";}
7. Ts.Saltan - 20 Мая, 2015 - 15:48:30 - перейти к сообщению
Как вариант, можно и так
8. Sail - 20 Мая, 2015 - 16:44:32 - перейти к сообщению
Александерр пишет:
Тоже не прокатывает в базу записывается как ltadmin2gt а должно admin2
Есть HTML-сущности, которые кодируются как &code;
Их надо просто декодировать.
То есть, преобразовать предложенный Panoptik'ом вариант следующим образом:
А если используете UTF-8, то и модификатор 'u' добавить к шаблону...
9. Александерр - 20 Мая, 2015 - 19:54:56 - перейти к сообщению
Подскажите еще, если сделать так:

То этого хватит для защиты от sql ?

 

Powered by ExBB FM 1.0 RC1