Что делает этот $ _SERVER ['REQUEST_METHOD'] === 'POST'?

Harun Feraidon спросил: 12 мая 2018 в 03:53 в: php

Немного новичок в php и прочитал код некоторых людей и увидел это:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        if (isset($_POST['...'])) {        } else {
            echo "...";
        }
    }

Я получаю то, что делает isset (...), но не понимает, что сначала если утверждение. Тем более, что оператор if работал, когда мой метод запроса был GET, но не был, когда мой метод запроса был POST

2 ответа

Есть решение
L1R ответил: 12 мая 2018 в 04:05

скажите, что ваша страница называется yourpage.php. Что означает этот код, так это то, что часть кода в операторе IF будет выполняться ТОЛЬКО, если вы будете получать доступ к странице yourPage.php посредством отправки формы. Поэтому, если вы просто загружаете эту страницу, набрав yourpage.php в адресной строке. этот код не будет работать.

Но если у вас есть некоторые < form action = 'yourPage.php' & gt ;. Когда вы отправляете эту форму, и вы попадаете на страницу yourpage.php. Этот код будет работать только в этом экземпляре. Когда страница пришла через проводку.

В основном это способ гарантировать, что определенный код произойдет только после публикации формы, подумайте о сообщении типа "Спасибо, что заполнили наш опрос!". который появляется после отправки вашей формы, но все же на той же странице.

Harun Feraidon ответил: 12 мая 2018 в 04:10
Хорошо, что помогает, спасибо
L1R ответил: 12 мая 2018 в 04:11
Рад, что смог помочь!
James ответил: 12 мая 2018 в 04:41
Это не очень хороший способ определить, была ли опубликована форма, она буквально проверяет, был ли метод запроса POST, и часто по умолчанию используется GET. Лучше иметь именованную кнопку отправки и проверить ключ массива POST для имени кнопки отправки. Зависит от сценария
James ответил: 12 мая 2018 в 04:40

$_SERVER['REQUEST_METHOD'] является одной из переменных сервера PHP.

Он определяет:

Какой метод запроса использовался для доступа к странице; т.е. "GET", "HEAD", "POST", "PUT".

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

Вы сказали:

оператор if работал, когда мой метод запроса был GET, но не был мой метод запроса POST

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