Ответ 1
С 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. На практике различные браузеры надежно отправляют имя/значение кнопки отправки с данными публикации, когда:
- Пользователь буквально нажимает кнопку отправки мышью или указательным устройством
- Или есть фокус на кнопке отправки (они вкладываются в нее), а затем нажимается клавиша Enter.
Существуют другие способы отправки формы, и некоторые браузеры/версии принимают решение не отправлять имя/значение каких-либо кнопок отправки в некоторых из этих ситуаций. Например, многие пользователи отправляют формы, нажимая клавишу Enter, когда курсор/фокус находится на текстовом поле. Формы также могут быть отправлены через JavaScript, а также некоторые более неясные методы.
Важно обратить внимание на эту деталь, иначе вы действительно можете расстроить своих пользователей, когда они отправляют форму, но "ничего не происходит" и их данные теряются, потому что ваш код не смог обнаружить отправку формы, потому что вы не предвидели факт что имя/значение кнопки отправки не может быть отправлено с данными публикации.
Кроме того, приведенный выше совет следует использовать и для форм с одной кнопкой отправки, поскольку вы всегда должны использовать кнопку отправки по умолчанию.
Я знаю, что Интернет заполнен тоннами учебных пособий по обработчикам форм, и почти все они делают только проверку имени и значения кнопки отправки. Но они просто неправы!