[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка на то что юзер нажал submit
Invis1ble
Встретил в одном чужом скрипте такой способ проверки:
if (isset($_POST['var1']) && isset($_POST['var2']) && isset($_POST['var3']))
т.е. перечисляются все переменные из формы (имена переменных я заменил). Конечно можно заменить (и наверно даже нужно) на
if (isset($_POST['var1'], $_POST['var2'], $_POST['var3']))
Вопрос немного в другом: я до этого проверял так (знакомый программер посоветовал):
if ($_SERVER['REQUEST_METHOD'] == 'POST')

Какой способ лучше? Может, есть какие-то подводные камни (например связанные с безопасностью) ??



Спустя 30 минут, 41 секунда (9.09.2010 - 06:54) Michael написал(а):
Ваш последний способ лучше по сравнению с предыдущими.

Я делаю так:
if (!empty($_POST))

Спустя 27 минут, 16 секунд (9.09.2010 - 07:21) twin написал(а):
Задачи то у этих скриптов разные...
Этот
if (isset($_POST['var1'], $_POST['var2'], $_POST['var3']))
ставит обязательным условием наличие всех переменных.
В обоих далее предложенных вариантах скрипт начнет работать при наличии хотя бы одной.

Спустя 3 часа, 19 минут, 21 секунда (9.09.2010 - 10:40) Basili4 написал(а):
о я делал так
$arr=$_SERVER['REQUEST_METHOD'] == 'POST'?$_POST:$_GET;

$a=isset($arr['a'])?$arr['a']:null;
..............

unset($arr);

Спустя 5 часов, 35 минут, 26 секунд (9.09.2010 - 16:16) Invis1ble написал(а):
А при каких условиях может не оказаться какой-либо переменной? Я вот никак не могу представить себе такую ситуацию.. Вроде, когда юзер нажимает submit, то отсылаются все переменные, хотя некоторые могут быть пустые...

Спустя 19 минут, 48 секунд (9.09.2010 - 16:36) twin написал(а):
Вот именно.

Спустя 3 минуты, 25 секунд (9.09.2010 - 16:39) Invis1ble написал(а):
Цитата (twin @ 9.09.2010 - 13:36)
Вот именно.

т.е. проверять наличие всех переменных смысла нет, я правильно понял?

Спустя 6 минут, 31 секунда (9.09.2010 - 16:45) silius написал(а):
тебе их нужно обработать, чтобы в них не подсунули фальш

Спустя 13 минут, 49 секунд (9.09.2010 - 16:59) Invis1ble написал(а):
silius обработаь-то понятно, они итак обрабатываются. Даже если будет false, все равно переменные уже существуют, а логика проверки заключается именно в этом

Спустя 3 минуты, 50 секунд (9.09.2010 - 17:03) Гость_Michael написал(а):
Цитата
А при каких условиях может не оказаться какой-либо переменной?

из всех кнопок type="submit" на форме передастся только та, на которую нажали.

Спустя 5 минут, 6 секунд (9.09.2010 - 17:08) Invis1ble написал(а):
Гость_Michael
ну а если не учитывать сами кнопки submit, остальные-то переменные все передаются, правильно?

Спустя 55 минут, 11 секунд (9.09.2010 - 18:03) Гость_Michael написал(а):
я всегда уже под конкретный случай проверяю isset-ом. А ты возьми создай формочку со всеми типами данных и проверь как передадутся если не выбрано/не щелкнуто на этих эл-тах. Например type="button" передается?

Спустя 5 минут, 50 секунд (9.09.2010 - 18:09) Invis1ble написал(а):
ну да, ну да... В общем надо специфику учитывать и затачивать под конкретные цели, но в общем случае (при передаче например только текстовых полей) достаточно $_SERVER['REQUEST_METHOD']

Спустя 4 минуты, 51 секунда (9.09.2010 - 18:14) Michael написал(а):
Конечно этого достаточно. Если под перечислением элементов подразумевалось типа защита от левых post запросов, то это не так делается.

Спустя 29 минут, 16 секунд (9.09.2010 - 18:43) Invis1ble написал(а):
Michael
немного непонял, что подразумевается под "левыми post запросами"?

Спустя 4 минуты, 35 секунд (9.09.2010 - 18:48) Rivalryzerg написал(а):
Invis1ble, любую форму можно подделать и прислать вместо 10 полей всего 3 или 20.

Спустя 1 минута (9.09.2010 - 18:49) DedMorozzz написал(а):
Открой для себя плагин "Tamper Data". Увидаешь возможности wink.gif Данные можно менять, после того, как нажал сабмит и они "по идеи" уже ушли...

Спустя 29 минут, 58 секунд (9.09.2010 - 19:19) Invis1ble написал(а):
DedMorozzz
спасибо за открытие глаз... Не знал, не знал...

Спустя 3 часа, 33 минуты, 40 секунд (9.09.2010 - 22:53) twin написал(а):
Да я вообще не о том... И в нормальных формах не все переменные могут оказаться. Возьмите чекбокс тот же.
Если допустим нужно, чтобы все поля были заполнены (валидация своего рода), то не прокатит вариант
if(isset($_POST))

Нужно все проверить. Разные задачи это.

Спустя 45 минут, 38 секунд (9.09.2010 - 23:38) Invis1ble написал(а):
twin
это понятно, я просто не знал что данные еще и подделать можно..

Спустя 8 часов, 11 минут, 23 секунды (10.09.2010 - 07:50) Michael написал(а):
Цитата (Invis1ble @ 9.09.2010 - 17:43)
Michael
немного непонял, что подразумевается под "левыми post запросами"?

Например трухацкер вместо того чтобы зайти к тебе на сайт, заполнить что надо, и нажать "Разместить комментарий" создаст у себя страничку, в ней формочку где action указывает на твою площадку где ты обрабатываешь сабмит своей формы и начнет клацать (или автоматически curl-ом).

Спустя 8 часов, 40 минут, 7 секунд (10.09.2010 - 16:30) Invis1ble написал(а):
Michael
Да, я понял. Буду учитывать


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

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