Как лучше всего проверить, была ли отправлена форма, чтобы определить, следует ли передавать переменные формы в мой класс проверки?
Сначала я подумал, может быть:
isset($_POST)
Но это всегда будет верным, поскольку суперглобал определяется повсюду. Я не хочу повторять каждый элемент моей формы с помощью:
if(isset($_POST['element1']) || isset($_POST['element2']) || isset(...etc
Во время написания этого вопроса я подумал о гораздо более простом решении: добавить скрытое поле, которое будет действовать как флаг, который я могу проверить.
Есть ли более «чистый» способ сделать это, чем добавить собственный флаг?
php
forms
validation
анонимное
источник
источник
submited
а затем использовать phpif(isset($_POST['submited']))
или скрытый ввод ...Ответы:
Для общей проверки, было ли
POST
действие, используйте:РЕДАКТИРОВАТЬ : Как указано в комментариях, этот метод не будет работать в некоторых случаях (например, с флажками и кнопкой без имени). Вам действительно стоит использовать:
источник
Как насчет
источник
Собственно, кнопка отправки уже выполняет эту функцию.
Попробуйте в ФОРМЕ:
Затем в обработчике PHP:
источник
if (null !== (filter_input(INPUT_POST, 'macaddress'))){
что заставитиспользование
источник
if ($_SERVER['REQUEST_METHOD'] == 'POST')
,источник
Попробуй это
источник
С другой стороны, всегда полезно добавить токен в вашу форму и проверить его, чтобы проверить, не были ли данные отправлены извне. Вот шаги:
Создайте уникальный токен (вы можете использовать хеш) Пример:
Назначьте этот токен переменной сеанса. Пример:
Добавьте скрытый ввод для отправки токена. Пример:
затем в рамках проверки проверьте, соответствует ли отправленный токен переменной сеанса.
источник
У меня была та же проблема - также убедитесь, что вы добавили
name=""
кнопку ввода. Что ж, это исправление сработало для меня.источник
Вы также можете использовать:
источник
is_array($_POST)
всегда дает истину (на моей машине). По stackoverflow.com/questions/5594020/php-check-if-post-is-array :$_POST is a superglobal array which is always defined
,unless somewhere in your code you either unset or overwrite $_POST somehow
, так что кажется , следует ожидать , что это всегда возвращает истину ..is_array($_POST)
это определенно не способ проверить, была ли отправлена форма.