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

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

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

где submit – это name <input type="submit" />

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

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

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

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

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

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

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

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

Если вы хотите иметь общую процедуру без зависимости «метод» (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, если нет.

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

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

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

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

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