PHP - метод POST и GET на одной странице - PullRequest
3 голосов
/ 24 июня 2009

Я хотел бы сделать переменную $ find равной $ _POST ['find'], если пользователь попадает на страницу после использования метода POST, но на той же странице сделать $ find равной $ _GET ['find '] если пользователь попадает на страницу после использования метода GET.

Как мне это сделать?

Заранее спасибо,

John

$find = $_GET['find'];

$find = $_POST['find'];

Ответы [ 6 ]

11 голосов
/ 24 июня 2009

Вы должны использовать глобальную переменную $_REQUEST. Он содержит все данные из $ _GET и $ _POST.

Кроме того, вы можете проверить метод запроса.

$find = ($_SERVER['REQUEST_METHOD'] == 'GET') ? $_GET['find'] : $_POST['find'];
5 голосов
/ 24 июня 2009

Переменная $_REQUEST содержит содержимое $_GET, $_POST и $_COOKIE, где опция variables_order определяет порядок чтения переменных и перезаписать уже существующее содержимое.

Таким образом, вы можете использовать $_REQUEST['find'] (учитывая, что значение cookie для find переопределит как POST, так и GET). Или вы реализуете это самостоятельно:

if (isset($_GET['find'])) {
    $find = $_GET['find'];
}
if (isset($_POST['find'])) {
    $find = $_POST['find'];
}

С этим кодом $find будет $_GET['find'], если он существует, если только не существует $_POST['find'], который переопределит значение из $_GET['find'].

2 голосов
/ 24 июня 2009

Буквально то, что вы просите:

if ($_SERVER['REQUEST_METHOD']=='POST') {
   $find = $_POST['find'];
} else {
   $find = $_GET['find'];
}

В качестве альтернативы вы можете использовать:

   $find = $_REQUEST['find'];

$ _ REQUEST - это комбинация $ _GET, $ _POST и $ _COOKIE.

0 голосов
/ 24 июня 2009

Если вам все равно, какой метод использовался, просто используйте $ _ REQUEST super global.

Если имеет значение, какой метод использовался:

$find = isset($_GET['find']) ? $_GET['find'] : false;
if ($find === false) {
   $find = isset($_POST['find']) ? $_POST['find'] : '';
   // do a POST-specific thing
}
else {
    // do a GET-specific thing
}
0 голосов
/ 24 июня 2009
if(isset($_GET['find'])){
    $find = $_GET['find'];
}elseif(isset($_POST['find'])){
    $find = $_POST['find'];
}else{
    $find = null;
}
// do stuff with $find;
0 голосов
/ 24 июня 2009

Используйте $ _REQUEST ['find'], чтобы получить объединенную информацию из $ _GET, $ _POST и $ _COOKIE.

$ _ REQUEST возвращает ассоциативный массив, который по умолчанию содержит содержимое $ _GET, $ _POST и $ _COOKIE (Вы можете изменить содержимое по умолчанию с помощью директивы php.ini "request_order" )

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