#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) то ваш код отметит форму как неотправленную, кроме той ошибки оно ничего не дает. Верно, любой может просто прописать в адресную строку все нужные данные и это будет эквивалентно отправке формы. Однако, есть хитрость, можно проверять рефер, с которого пришел пользователь, на то чтобы он был равен текущей странице.
Комментариев нет:
Отправить комментарий