PHP - POST和GET方法在同一页面上

时间:2009-06-23 21:01:58

标签: php

如果用户在使用POST方法后登陆页面,我想使变量$ find等于$ _POST ['find'],但是在同一页面上使$ find等于$ _GET ['find ']如果用户在使用GET方法后登陆页面。

我该怎么做?

提前致谢,

约翰

$find = $_GET['find'];

$find = $_POST['find'];

6 个答案:

答案 0 :(得分:11)

您应该使用$_REQUEST全局变量。它包含来自$ _GET和$ _POST的所有数据。

或者,您可以检查请求方法。

$find = ($_SERVER['REQUEST_METHOD'] == 'GET') ? $_GET['find'] : $_POST['find'];

答案 1 :(得分:5)

$_REQUEST variable包含$_GET$_POST$_COOKIE的内容,其中variables_order option定义了读取变量的顺序并覆盖已存在的内容内容。

因此,您可以使用$_REQUEST['find'](考虑到find的Cookie值将覆盖POST和GET)。或者你自己实现它:

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

如果代码$find存在,则$_GET['find']将成为$_POST['find'],除非有$_GET['find']覆盖{{1}}的值。

答案 2 :(得分:2)

字面意思是你要求的是:

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

或者,您可以使用:

   $find = $_REQUEST['find'];

$ _ REQUEST是$ _GET,$ _POST和$ _COOKIE的组合。

答案 3 :(得分:0)

使用$ _REQUEST ['find']从$ _GET,$ _POST和$ _COOKIE获取合并信息。

$_REQUEST返回一个关联数组,默认情况下包含$ _GET,$ _POST和$ _COOKIE的内容(您可以使用php.ini "request_order" directive更改默认内容)

答案 4 :(得分:0)

if(isset($_GET['find'])){
    $find = $_GET['find'];
}elseif(isset($_POST['find'])){
    $find = $_POST['find'];
}else{
    $find = null;
}
// do stuff with $find;

答案 5 :(得分:0)

如果您不关心使用哪种方法,那么只需使用$_REQUEST超级全局。

如果使用哪种方法很重要:

$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
}