В настоящее время, когда я создаю свои формы, мне нравится, чтобы имя кнопки отправки было равно id формы. Затем, в моем php, я просто делаю if(isset($_POST['submitName']))
, чтобы проверить, была ли отправлена форма и какая форма была отправлена.Каков наилучший способ определить, какая форма была отправлена?
Во-первых, существуют ли какие-либо проблемы с безопасностью или дефекты дизайна с помощью этого метода?
Одна из проблем, с которыми я столкнулся, - это когда я хочу наложить свои формы на javascript, чтобы обеспечить более быструю проверку пользователя. Например, хотя мне, очевидно, необходимо сохранить проверку на стороне сервера, для пользователя более удобно, если сообщение об ошибке отображается в строке, при размывании ввода. Кроме того, было бы полезно обеспечить полную проверку формы, нажав кнопку отправки.
Поэтому, когда пользователь нажимает кнопку отправки формы, я останавливаю действие по умолчанию, выполняя мою проверку и затем пытаюсь переименовать традиционную функцию отправки, если проверка прошла. Для этого я использую метод form.submit()
, но, к сожалению, это не отправляет переменную кнопки отправки (как и должно быть, поскольку form.submit() можно вызвать без нажатия любой кнопки). Это означает, что мой PHP-скрипт не может обнаружить, что форма была отправлена.
Каков правильный способ обойти это? Похоже, стандартное решение заключается в добавлении скрытого поля в форму после прохождения проверки, которая имеет имя идентификатора формы. Затем, когда вызывается form.submit(), это передается вместе с кнопкой отправки. Однако это решение кажется мне очень неудобным, и поэтому мне интересно, следует ли мне:
a) Используйте альтернативный метод для обнаружения того, какая форма была отправлена, которая не полагается полагаться на передачу кнопки отправки. Если да, то какая там альтернатива? Очевидно, что с лишним скрытым полем с самого начала не лучше.
b) Используйте альтернативное решение Javascript, которое позволяет мне сохранить мой дизайн, отличный от Javascript. Например, есть ли альтернатива form.submit(), которая позволяет мне передавать дополнительные данные?
c) Подсоедините его и просто вставьте скрытое поле, используя Javascript.
ОБНОВЛЕНИЕ: Я принял правильный ответ, но я просто хотел прояснить свою ошибку здесь, чтобы он был более полезным для других. Я использую Mootools, и я очень наивно полагал, что когда я использовал addEvent ('submit' ...), мне нужно было немедленно вызвать event.stop(), чтобы предотвратить отправку. На самом деле это не так, и я могу просто вызвать event.stop(), только если проверка не удалась. В противном случае отправитель по умолчанию запускается, как обычно, и использование form.submit() становится совершенно ненужным.
Моя команда в настоящее время делает это таким образом. Мне это не нравится, так как теперь у наших форм есть кнопка отправки. Ребята, которые его реализовали, перешли в другую команду; мне и другому товарищу по команде было трудно понять, почему наши формы не были отправлены, тогда мы поняли, что для подтверждения требуется кнопка отправки. – b01