Страницы

Поиск по вопросам

среда, 18 марта 2020 г.

Проверка отправки формы

#php


Привет.Какая лучше проверка что форма отправлена?
Припустим у нас есть 
что я только не встречал:
1.Cамый популярный вариант  if (isset($_POST['submit'])
2.Тоже вариант  if (isset($_POST['submit']) && !empty($_POST['submit']))
3.Но мне больше всего пригляделся вариант:
 if ($_POST['photoList']=='submit'); Это ведь вариант включает по -умолчанию первые
2 проверки.Почему его так массово не используют?
C post вроде более менее понятно,а как же быть с GET -отправкой формы? Ведь любой
может прописать в адресной строке нужный параметр    


Ответы

Ответ 1



последний вариант не используют, так как в случае, если сабмита не было, будет предупреждение о несуществующем ключе массива. ИМХО, из простых самый лучший вариант: function form_submitted($form_name=false){ if(!isset($_POST['submitted'])){ // был ли вообще сабмит return false; //неа, завершаем } if($form_name && $_POST['submitted']!=$form_name){ //если проверяется конкретная форма, была ли отправлена именно она? return false;//нет, завершаем } return true;//все, ок. } Более сложный вариант - генерить уникальный хэш при каждой генерации формы, чтобы нельзя было отправить несколько раз, например, при обновлении Поставил ссыль на этот способ

Ответ 2



Да, это оптимальный вариант, используйте его Непонятно зачем второе условие, если в submit будет value = ''(пустая строка, здесь подробнее http://php.net/manual/ru/function.empty.php) то ваш код отметит форму как неотправленную, кроме той ошибки оно ничего не дает. Верно, любой может просто прописать в адресную строку все нужные данные и это будет эквивалентно отправке формы. Однако, есть хитрость, можно проверять рефер, с которого пришел пользователь, на то чтобы он был равен текущей странице.

Комментариев нет:

Отправить комментарий