Как я могу сказать для php-страницы, если кто-то пришел POST или GET? - PullRequest
12 голосов
/ 30 октября 2008

Я хотел бы иметь страницу в php, которая обычно отображает информацию, основанную на отправленном ей запросе GET. Однако я бы хотел, чтобы он также мог обрабатывать определенные POST-запросы. Итак, как я могу определить, были ли какие-либо данные отправлены POST, чтобы я мог на них реагировать?

Ответы [ 6 ]

31 голосов
/ 30 октября 2008

Используйте $_SERVER['REQUEST_METHOD'], чтобы определить, был ли доступ к вашей странице с помощью запроса GET или POST.

Если к нему обращались по почте, проверьте наличие переменных в $_POST для обработки.

7 голосов
/ 30 октября 2008

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

Если вы хотите проверить, был ли запрос отправлен POST или GET, вы можете:

if($_SERVER['REQUEST_METHOD'] === 'post')
{
    // Do one thing
}
elseif($_SERVER['REQUEST_METHOD'] === 'get')
{
    // Do another thing
}

Или:

 if(!empty($_POST))
 {
     // Process POST
 }
 elseif(!empty($_GET))
 {
     // Process GET
 }
4 голосов
/ 30 октября 2008

Чек $_SERVER['REQUEST_METHOD']. Документация здесь .

2 голосов
/ 30 октября 2008

Для таких вопросов, как обычно, о переменных среды, вот как я их выясняю:

  • Создайте foo.php, который просто вызывает phpinfo ();
  • GET foo.php
  • POST to foo.php
  • Сравните вывод phpinfo (); и делаю мои теории о том, что такое поведение
  • Проверьте мою теорию против документов на php.net

Это намного проще, чем пытаться найти ответ в документации по php.net.

0 голосов
/ 31 октября 2008

Я использую переменную $ _REQUEST, если есть страница и

это также необходимо уметь обрабатывать определенные POST-запросы

http://is.php.net/manual/en/reserved.variables.request.php

Из руководства:

Ассоциативный массив, который по умолчанию содержит содержимое $ _GET, $ _POST и $ _COOKIE.

0 голосов
/ 30 октября 2008
!empty($_POST)

Я уверен, что вы можете получить доступ к странице через GET и POST, так что это будет самый безопасный способ IMO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...