Проверка, если запрос отправлен обратно в PHP

Как я могу проверить, является ли запрос ссылкой на PHP, является ли это ниже?

if (isset($_POST["submit"]))

где submit - name <input type="submit" />

Ответы

Ответ 1

Это будет работать, если вы знаете и ожидаете такую ​​кнопку отправки на той же странице.

Если вы ничего не знаете о переменных запроса, другой способ - проверить способ запроса:

if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST')

Как указано в комментариях, специально для проверки postback, а не только любого запроса POST, вам необходимо убедиться, что referrer - та же страница, что и страница обработки. Что-то вроде этого:

if (basename($_SERVER['HTTP_REFERER']) == $_SERVER['SCRIPT_NAME'])

Ответ 2

Вы хотите $_SERVER['REQUEST_METHOD'] == 'POST'.

У вас очень похожий, хотя и менее общий вопрос, чем этот.

Это, вероятно, лучший подход, чем проверка переменной post. Во-первых, вы не знаете, будет ли отправлена ​​эта переменная. У меня есть подозрение, что некоторые браузеры просто не отправят ключ вообще, если значение не указано. Кроме того, я бы сказал, что некоторые особенности PHP не могут определять $_POST, если нет POSTED-значений.

Ответ 3

Если вы хотите иметь общую подпрограмму без зависимости "метод" (post/get) и любые другие имена элементов форума, тогда я рекомендую этот

<?php
$isPostBack = false;

$referer = "";
$thisPage = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];

if (isset($_SERVER['HTTP_REFERER'])){
    $referer = $_SERVER['HTTP_REFERER'];
}

if ($referer == $thisPage){
    $isPostBack = true;
} 
?>

теперь if $isPostBack будет true, если это postback, false, если нет.

Я надеюсь, что это поможет

Ответ 4

Да, это должно сделать это.

Осторожно, когда вы используете тип типа image, они не будут отправлять атрибут name в некоторых браузерах, и вы не сможете обнаружить POST. Несколько раз я ударил головой о стол, пока не осознал это сам.

Обходным путем для этого является добавление ввода типа hidden.

Ответ 5

Да. Вы также можете использовать if(array_key_exists('submit', $_POST))