Php узнать какая кнопка нажата

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

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

В этом ответе есть большая ошибка. Он должен использовать name = «btnSubmit», а не и name = «btnDelete», а не . Все те люди, которые проголосовали за это, действительно ли они это тестировали?

4 ответа

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

if ($_SERVER['REQUEST_METHOD'] === 'POST') < // Something posted if (isset($_POST['btnDelete'])) < // btnDelete >else < // Assume btnSubmit >> 

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

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

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

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

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

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

if ($_SERVER['REQUEST_METHOD'] === 'POST') < // Something posted if (isset($_POST['btnSubmit3'])) < // btnSubmit3 >else if (isset($_POST['btnSubmit2'])) < // btnSubmit2 >else < // Assume btnSubmit1 >> 
if ($_SERVER['REQUEST_METHOD'] === 'POST') < // Something posted // Assume btnSubmit1 >

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

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

А как насчет
Причина, по которой мы можем использовать $_SERVER[‘REQUEST_METHOD’] === ‘POST’ для обнаружения формы POST, заключается в том, что POST является преднамеренным, а GET — нет — GET используется по умолчанию. Таким образом, использование $_SERVER[‘REQUEST_METHOD’] === ‘GET’ было бы ненадежным, потому что кто-то может просто загружать страницу / URL-адрес, а не отправлять форму, поскольку браузер будет использовать GET в любом сценарии, потому что это метод запроса по умолчанию.

Читайте также:  Php load ini files

Существует множество различных способов надежно обнаружить отправку формы GET, но простой и надежный метод — просто добавить в форму, а затем вместо использования if ($_SERVER[‘REQUEST_METHOD’] === ‘POST’) сделать if (isset($_GET[‘submitted’])) для обнаружить отправку формы. Код, определяющий, какая кнопка была нажата, остается таким же, как и для POST.

Поддержка браузера:
Эта стратегия имеет отличную поддержку браузера и не полагается ни на какое-либо специфическое поведение браузера, ни на какие-либо новые функции html5. Он должен правильно работать как с современными, так и с древними браузерами, даже с начала 2000-х годов. Кроме того, логика кода php легко адаптируется к другим языкам, поскольку не зависит от каких-либо сложных или специфичных для php поведений.

Источник

КАК УЗНАТЬ КАКАЯ КНОПКА НАЖАТА PHP

В PHP можно определить, какая из кнопок на форме была нажата. Обычно используются кнопки типа submit или button, но также могут использоваться и другие типы кнопок, такие как radio или checkbox. Для определения нажатой кнопки PHP использует переменную массива $_POST или $_GET, в зависимости от метода отправки данных формы.

Чтобы узнать, какая кнопка была нажата на форме, нужно проверить значение соответствующего элемента массива $_POST или $_GET. Каждый элемент массива соответствует полю формы, и значение этого элемента равно значению, введенному в поле.

Например, если в форме есть кнопка с именем «submit», чтобы узнать, была ли она нажата, нужно проверить значение элемента $_POST[‘submit’]:

if(isset($_POST[‘submit’])) // код, который нужно выполнить, если кнопка была нажата
>

Если на форме есть несколько кнопок, то для определения нажатой кнопки нужно добавить атрибут «name» к каждой кнопке и проверять значение соответствующего элемента массива $_POST или $_GET.

Например, если на форме есть две кнопки submit с именами «submit1» и «submit2», то для определения, какая из них была нажата, нужно проверить значения элементов $_POST[‘submit1’] и $_POST[‘submit2’].

if(isset($_POST[‘submit1’])) // код, который нужно выполнить, если первая кнопка была нажата
>
if(isset($_POST[‘submit2’])) // код, который нужно выполнить, если вторая кнопка была нажата
>

Нажатие на кнопку в JavaScript (событие и функции)

How to get value of a radio button in javascript — Radio button value in JavaScript

Как получить ввод от пользователя в PHP (сложение двух чисел, заданных пользователем, и вывод суммы)

How To Show And Hide Input Fields Based On Radio Button Selection #phpfortech

HTML5 #8 Ссылки и кнопки (Links \u0026 Buttons)

Источник

Как отследить нажатие на кнопку php?

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

Если Вам нужно хранить значение переменной между запросами — для этого можно использовать например сессию или базу данных, или хранилище или.

С помощью отправки формы на сервер, либо с помощью AJAX-запроса, это наиболее распространённые способы.

FaFuChEG, уточните, в каком именно месте у Вас сложности или что именно нужно пояснить, т.к. я видимо не до конца понимаю Ваш вопрос. Кнопка, по умолчанию — отправляет на сервер форму (тег ), в которой она (кнопка) располагается. В этой форме соотв. Вы отправлять различные поля, значения которых в последствии можно получить в переменных $_GET и $_POST.

Читайте также:  Https lk2 service nalog ru lk index html

FaFuChEG, можете, только между вашими 1 и 2 произойдет еще много всего.
Да и перед 1 (эта кнопка не сама появится же).
А также вы наверняка захотите что-то сделать и после 2.

Immortal_pony

Кратко — нет. Добро пожаловать в мир скриптовых языков.

Все работает так:
1. Пользователь вбивает в адресной строке адрес вашего сайта
2. Сервер подготавливает ответ (html). В этот момент инициализируются перемнные, им задаются значения, и т.д.
3. Сервер передает заканчивает свою работу. Все перемнные удаляются из памяти.
4. Клиент получает данные от сервера.
5. Пользователь видит html, подготовленный сервером.

Последующие действия пользователя могут инициализировать новый запрос на сервер, но тогда ВСЕ пермеменные будут инициализовваться заново.

Никак. PHP работает на сервере, и не видит что там клиент нажимает.

Браузер должен отправить запрос на сервер, обычно с POST или GET запросом (есть и другие варианты, но эти два чаще всего).

Открой учебник по HTML и почитай как устроены ссылки и формы. Или ajax.

VladikLinnik

Посерчи AJAX.
Выглядеть решение будет примерно так — при клике на кнопку идет AJAX-запрос на сервер, в data отправляешь кнопку по которой кликнул, на сервере обрабатываешь и возвращаешь в браузер.

На принимающей стороне проверяете эту переменную в зависимости от нее выполняете нужный блок $current.
$current = $POST[name]; (или GET)
Только вместо $current==1 впишите $current==first и т. п.

Как-то так. Давно не кодил. Должно работать, надо проверить.

nikolaevevge

К Вашему ответу добавил бы ещё что нужно тег form добавить потому что его сейчас нет
А ещё у Вас ошибка не $POST а $_POST поправьте пожалуйста.

Видя отсутствие тега

и и присутствия onclick=»photo_three()» можно предположить что у вас технология AJAX. В этой JS функции вы должны вызвать php страницу с сервера и «использовать, например, сессию или базу данных, или хранилище или. » (то что сказал Евгений Вольф ) для сохранения результата нажатия. Например, мой.сайт.рф/photo_three.php или мой.сайт.рф/photo.php?current=three (так не делайте 🙂 — это только пример — безопасность к летит к черту). Нужно написать еще одну страницу на php, контроллер, Поищите AJAX+PHP .
Когда вы откроете страницу вашего php скрипта инициализируете переменную $current из того хранилища которое выбрали (Сессия или база данных . )

Войдите, чтобы написать ответ

Почему сервер не возращает куки?

Источник

Проверить, нажата ли кнопка

Как в PHP коде определить, была ли отправлена информация из формы или нет и в зависимости от этого записать в какую-нибудь вспомогательную переменную результат true/false?

form action="php/is-text-sent.php" method="POST"> p> Enter text: input type="text" name="text"> input type="submit" value="Submit" name="button"> /p> /form>
 $send = $_POST['button']; $date = $_POST['text']; // и вот что здесь надо сделать ?>

Проверить нажата ли кнопка
Здравствуйте! Создаю интернет-магазин (в институте задали). Столкнулась с такой проблемой, что не.

Какая была нажата кнопка?
Доброго времени суток уважаемые форумчане. Есть скрипт, в нем много разных кнопок и пользователю.

Определить какая кнопка нажата
Всем привет! я новичок в php и html если что не пинайте сильно) у меня есть html в котором есть.

Узнать, какая кнопка была нажата
Доброго времени суток! Тут возникла проблема и я зашел в ступор, буду благодарен за вашу помощь.

 //$send = $_POST['button']; $date = $_POST['text']; // и вот что здесь надо сделать if(isset($_POST['button'])) {echo 'Кнопка была нажата'; $bam=TRUE;} else {echo 'Кнопка пока не нажата'; $bam=FALSE;} ?>

Как определить какая кнопка нажата?
Такой вариант НЕ ПОДХОДИТ! <?php if (isset($_POST)) echo ‘Нет’; elseif (isset($_POST)).

Можно определить, какая конкретно кнопка submit нажата на форме?
Можно определить, какая конкретно кнопка submit нажата на форме?

Как узнать кнопка какой формы была нажата, если на странице имеется несколько форм, а обработчик один?
Здравствуйте! Подскажите пожалуйста, как узнать кнопка какой из форм была нажата, чтоб можно было.

Проверить, нажата ли кнопка
Добрый день, как сделать проверку? Если активизирована кнопка, то выполняется запрос иначе выдает.

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Оцените статью