Что состоит в том, чтобы определить лучший способ, какая форма была отправлена?

В настоящее время, когда я разрабатываю свои формы, мне нравится сохранять название кнопки отправки равным идентификатору формы. Затем в моем php я просто делаю if(isset($_POST['submitName'])) чтобы проверить, была ли форма отправлена и какая форма была отправлена.

Во-первых, есть ли какие-либо проблемы безопасности или недостатки дизайна с этим методом?

Одна проблема, с которой я встретился, состоит в том, когда я хочу наложить свои формы с JavaScript, чтобы предоставить более быструю проверку пользователю. Например, пока я, очевидно, должен сохранить серверную проверку, более удобно для пользователя, если сообщение об ошибке отображено встроенное после размывания входа. Кроме того, было бы хорошо обеспечить всю проверку формы при нажатии на кнопку отправки.

Поэтому, когда пользователь нажимает на кнопку отправки формы, я останавливаю действие по умолчанию, делая мою проверку, и затем пытаясь к renable, традиционные отправляют функциональность, если проверка передает. Чтобы сделать это, я использую form.submit() метод, но, к сожалению, это не отправляет переменную кнопки отправки (как это должно быть, как form.submit () может быть назван без любой нажатой кнопки). Это означает мои сбои Сценария PHP обнаруживать, что форма была отправлена.

Что корректный путь состоит в том, чтобы работать вокруг этого? Кажется, что стандартное решение состоит в том, чтобы добавить скрытое поле в форму после передающей проверки, которая имеет название идентификатора формы. Затем, когда form.submit () называют, это проведено вместо кнопки отправки. Однако это решение кажется очень неизящным мне и таким образом, я задаюсь вопросом, должен ли я:

a) Используйте альтернативный метод для обнаружения, какая форма была отправлена, который не полагается, полагаются на передачу кнопки отправки. Раз так, что альтернатива там? Очевидно, просто наличие дополнительного скрытого поля от запуска не немного лучше.

b) Используйте альтернативное решение JavaScript, которое позволяет мне сохранять свой дизайн не-JavaScript. Например, есть ли альтернатива form.submit (), который позволяет мне передавать в дополнительных данных?

c) Высосите его и просто вставьте скрытое поле с помощью JavaScript.

ОБНОВЛЕНИЕ: я принял корректный ответ, но я просто хотел разъяснить свою ошибку здесь, таким образом, это будет более полезно для других. Я использую Mootools, и я очень наивно полагал, что, когда я использовал addEvent ('отправляют'...) я должен был сразу назвать event.stop () для предотвращения от от того, чтобы быть отправленным. На самом деле дело обстоит не так и я могу просто назвать event.stop (), только если проверка перестала работать. Иначе, значение по умолчанию отправляют, запущен, как обычно, и использующий form.submit () становится абсолютно ненужным.

8
задан Aza 11 April 2013 в 06:14
поделиться

2 ответа

Вы можете отправлять формы различным обработчикам с помощью action = file1.php и action = file2.php .

Они обрабатываются с использованием одного и того же кода? Поместите это в отдельные файлы, включите общие и запишите уникальные биты в каждый из файлов обработки. Не взламывайте, а организовывайте.

Для проверки Javascript не останавливайте действие по умолчанию, а затем продолжайте, вместо этого сделайте следующее:

if (validation != valid) {
    return false;
}

Таким образом, если JS отключен или проверка завершится неудачно, действие / событие формы останется нетронутым и будет вести себя так, как ожидалось, в противном случае это чокнутый. И, конечно же, сохраните валидацию на стороне сервера. Это «настоящая» проверка, клиентская сторона предназначена только для того, чтобы доставить удовольствие пользователю и сэкономить его время. Никогда не полагайтесь на это ради ВАС.

6
ответ дан 5 December 2019 в 18:57
поделиться

Вы можете настроить действие формы, чтобы добавить ключ / значение получения; например action = "formhandle.php? formid = 10"

3
ответ дан 5 December 2019 в 18:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: