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
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: проверка данных на наличие массива
Покинул форум
Сообщений всего: 283
Дата рег-ции: Май 2011 Откуда: rm -rf /
Помог: 0 раз(а)
В общем при вводе в форму логина массив, например: author[]
то php принимает его как массив и обрабатывает так же
функция is_array проверяет на наличие массива, так вот, если в введенных данных отправлен псевдо-массив, то как его при обработке сделать НЕ массивом, было author[] а при обработке author
Причем регулярка почему то не удаляет [] символы...
----- 90% ошибок находятся в полуметре от монитора...
imya
Отправлено: 07 Февраля, 2013 - 14:32:48
Участник
Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012 Откуда: Запорожье, Украина
Помог: 19 раз(а)
А зачем логин делать массивом?
Если бы у вас был массив чекбоксов или радиобаттонов - тогда ладно ещё...
Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
DelphinPRO
Отправлено: 07 Февраля, 2013 - 17:06:53
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
foozzi пишет:
мне нужно что бы при вводе логин[] при обработке оставался чистый логин без знаков массива
По-моему, вы морочите голову.
Я вам привел пример защиты от возможной ошибки если "хакер" в файрбаге поменяет параметр name.
По поводу параметра value - какая разница, что там введет пользователь в окно ввода? Экранируйте при записи в БД и обрабатывайте htmlspecialchars при выводе на страницу.
И приведите код с тестовыми входными данными, который запишет в БД (выведет на экран) "Array" вместо реальных данных.
----- Чем больше узнаю, тем больше я не знаю.
foozzi
Отправлено: 07 Февраля, 2013 - 17:11:46
Посетитель
Покинул форум
Сообщений всего: 283
Дата рег-ции: Май 2011 Откуда: rm -rf /
Помог: 0 раз(а)
imya пишет:
уберите из name=author[] [] и будет всё ок.
да у меня и нет там этих символов (Добавление)
DelphinPRO пишет:
foozzi пишет:
мне нужно что бы при вводе логин[] при обработке оставался чистый логин без знаков массива
По-моему, вы морочите голову.
Я вам привел пример защиты от возможной ошибки если "хакер" в файрбаге поменяет параметр name.
По поводу параметра value - какая разница, что там введет пользователь в окно ввода? Экранируйте при записи в БД и обрабатывайте htmlspecialchars при выводе на страницу.
И приведите код с тестовыми входными данными, который запишет в БД (выведет на экран) "Array" вместо реальных данных.
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
При входной строке "author[]":
Во-первых, ваш код у меня выводит "author".
Во-вторых, если убрать регулярку, выведет "author[]".
Никакой интерпретации, как массива. Что я делаю не так?
И, в третьих, считаю такой подход неверным. Нельзя искажать имя пользователя, если он его вводит. Если не можете сохранять так, как введено, то следует просто проверить на корректность регуляркой, и выдать ошибку.
----- Чем больше узнаю, тем больше я не знаю.
DeepVarvar
Отправлено: 07 Февраля, 2013 - 17:38:02
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
DelphinPRO пишет:
Если не можете сохранять так, как введено, то следует просто проверить на корректность регуляркой, и выдать ошибку
Верно, нужно реализовывать как "фильтр" так и "валидатор".
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.