Intereting Posts
MySQL Вставить строку, дублировать: добавить суффикс и повторно вставить PHP – количество циклов выбранных флажков в форме submit Нужно регулярное выражение, которое проверяет, содержат ли строки только буквы az и числа и подчеркивание (_) и дефис (-) password_hash каждый раз возвращает значение Cookie по-прежнему настроен на HTTP с ini_set ('session.cookie_secure', 1); Создание оттенков серого с помощью библиотеки GD Стоимость проверки времени изменения файла $ PHP_AUTOCONF ошибки на mac os x 10.7.3 при попытке установки расширений pecl PHP – вопрос о загрузке и выгрузке файла изображения Неопределенное свойство: Illuminate \ Database \ Eloquent \ Collection :: Laravel 5.2 WordPress: критерии поиска WP_Query в 'post_name' Вставить во все ячейки, когда записи содержат более одного PHP Проблема при загрузке страницы PHP в div с Shadowbox jQuery Выходной буфер PHP не промывается TCPDF ERROR: невозможно найти объект (8, 0) в ожидаемом месте

if (isset ($ _ POST не работает для Internet Explorer

У меня есть форма отправки сообщений на ту же страницу, чтобы удалить изображение на сервере с помощью php. На этой странице есть несколько форм и представлены, и по какой-то причине он не будет работать с использованием Internet Explorer. Прекрасно работает с Chrome и Firefox. После нажатия отправить страницу выполняет код в первом, если (isset ($ _ POST не правильный ниже).

HTML

<form action="owner.php" method="post" class="registration_form"> <input type="text" name="album_name" /> <input type="text" name="album_code" /> <input type="hidden" name="add_album" value="TRUE" /> <input type="submit" value="Create Album" /> </form> <form action="owner.php" method="post" class="registration_form"> <input type="hidden" name="albumdelete" value="TRUE" /> <input type="radio" name="album" value="'.$album[$key_Number].'"> <input type="submit" value="Delete"> </form> <form action="owner.php" method="post"> <input type="hidden" value="true" name="picdelete"> <input type="hidden" name="picture" value="'+d[o].src+'"> <input type="submit" value="Delete This Picture" > </form> 

PHP

 if (isset($_POST['add_album'])) { all of my add album code **********This is the code it runs***** } else if (isset($_POST['albumdelete'])) { }else if (isset($_POST['picdelete'])) { *********This is the code it should run********* Works fine on all browsers I test except IE. Tried multiple computers } 

Использование isset ($ _ POST ['submit']), чтобы проверить, была ли форма опубликована или отправлена, является плохой практикой, потому что она несовместима с Internet Explorer.

Этот метод зависит от кнопки отправки формы, присутствующей в массиве $ _POST. Проблема заключается в том, что Internet Explorer не отправляет кнопку отправки в качестве переменной post, если пользователь нажал клавишу ввода, чтобы отправить форму.

Вот типичный пример:

PHP-код

 <?php if(isset($_POST['submit'])) { // a form was submitted (POSTED) } ?> 

Я вижу это все время даже с промежуточными и выше программистами. Возможно, проблема связана со многими низкими качествами или устаревшими онлайн-учебниками PHP, которые доступны.

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

Решение

Лучшей практикой проверки наличия формы является использование переменной сервера REQUEST_METHOD. Эта переменная будет установлена ​​в POST, если форма была отправлена ​​(при условии, что форма имеет метод POST. Ниже приведена наилучшая практика для обнаружения отправки формы с PHP.

PHP-код

 <?php if($_SERVER['REQUEST_METHOD'] == 'POST') { // a form was submitted (POSTED) } ?> 

Вышеупомянутое работает во всех браузерах, поскольку оно не зависит от кнопки отправки, присутствующей в пост-переменных.