Как я могу определить, какая кнопка была нажата в форме PHP?

У меня есть несколько кнопок на моей странице, но я не знаю, как узнать, на какой из них был нажат. Вот разметка для двух кнопок:

<input type="submit" id="btnSubmit" value="Save Changes" /> <input type="submit" id="btnDelete" value="Delete" /> 

С помощью html-формы, например:

 <input type="submit" name="btnSubmit" value="Save Changes" /> <input type="submit" name="btnDelete" value="Delete" /> 

Используемый PHP-код будет выглядеть так:

 if ($_SERVER['REQUEST_METHOD'] === 'POST') { //something posted if (isset($_POST['btnDelete'])) { // btnDelete } else { //assume btnSubmit } } 

Вы всегда должны предполагать или по умолчанию, чтобы первая кнопка отправки отображалась в исходном коде формы html . На практике различные браузеры надежно отправляют имя / значение кнопки отправки с данными сообщения, когда:

  1. Пользователь буквально нажимает кнопку отправки с помощью мыши или указательного устройства
  2. Или фокусируется на кнопке отправки (они привязаны к ней), а затем нажата клавиша ввода.

Существуют и другие способы отправки формы, и некоторые браузеры / версии решают не отправлять имя / значение любых кнопок отправки в некоторых из этих ситуаций. Например, многие пользователи представляют формы, нажимая клавишу ввода, когда курсор / фокус находится в текстовом поле. Формы также могут быть представлены через javascript, а также некоторые более неясные методы.

Важно обратить внимание на эту деталь, в противном случае вы можете действительно расстроить своих пользователей, когда они отправят форму, но «ничего не происходит», и их данные потеряны, потому что ваш код не смог обнаружить отправку формы.

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

Я знаю, что в Интернете заполнены тонны учебных пособий по форме, и почти все они делают не что иное, как проверку имени и значения кнопки отправки. Но они просто ошибаются!

В HTML:

 <input type="submit" id="btnSubmit" name="btnSubmit" value="Save Changes" /> <input type="submit" id="btnDelete" name="btnDelete" value="Delete" /> 

В PHP:

 if (isset($_POST["btnSubmit"])){ // "Save Changes" clicked } else if (isset($_POST["btnDelete"])){ // "Delete" clicked } 

Вы спрашиваете в php или javascript.

Если он находится в php, укажите его имя и используйте метод post или get, после этого вы можете использовать опцию isset или это конкретное имя кнопки проверяется на это значение.

Если он находится в js, используйте getElementById для этого