Проверка, если запрос отправлен обратно в 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))