在函数PHP中使用$ _Request

时间:2013-09-25 20:31:15

标签: php function session request

1)

我有这个:

function ObtainRequest($Field, $Method) {
  $Returned = "";
  if ($Method == "POST")
    $Returned = $_POST[$Field];
  else if ($Method == "GET")
    $Returned = $_GET[$Field];
  else
    $Returned = $_REQUEST[$Field];
return $Returned;
}

现在,使用函数:

if (isset(ObtainRequest("OneField","POST"))) {
  DoSomething();
} else if (!isset(ObtainRequest("OneField","POST"))) {
  DoOtherthing();
}

但是我的脚本没有运行(显示计划页)...

我的错误是什么?

2)

$_REQUEST在函数内部丢失了吗?

此代码有效!!:

      if (isset($_REQUEST["OneField"])) {
        DoSomething();
      }

此代码不起作用!!:

      if (isset(ObtainRequest("OneField","REQUEST"))) {
        DoSomething();
      }

此代码不起作用!!:

      if (empty(ObtainRequest("OneField","REQUEST"))) {
        DoSomething();
      }

第3)

它也适用于Session吗?

3 个答案:

答案 0 :(得分:1)

你的错误在这里:

$Method == "Post"

但你传递大写的POST

ObtainRequest("OneField","POST")

修复strtoupper()

function ObtainRequest($Field, $Method) {
  $Returned = "";
  $Method = strtoupper($Method);
  if ($Method == "POST")
    $Returned = isset($_POST[$Field]) ? $_POST[$Field] : false;
  else if ($Method == "GET")
    $Returned = isset($_GET[$Field]) ? $_GET[$Field] : false;
  else
    $Returned = isset($_REQUEST[$Field]) ? $_REQUEST[$Field] : false;
  return $Returned;
}

此外,可以使用switch构造缩短此功能:

function ObtainRequest($Field, $Method) {
    switch(strtoupper($Method)){
        case "POST": return isset($_POST[$Field]) ? $_POST[$Field] : false;
        case "GET": return isset($_GET[$Field]) ? $_GET[$Field] : false;
        default: return isset($_REQUEST[$Field]) ? $_REQUEST[$Field] : false;
    }
}

第二个问题是isset()可能会与变量一起使用,但不会与功能结果一起使用。改为使用布尔检查:

if (ObtainRequest("OneField","POST") !== false) {
  DoSomething();
} else if (ObtainRequest("OneField","POST") === false) {
  DoOtherthing();
}

  

它也适用于Session吗?

好吧,如果您对我的观点感兴趣: $_SESSION 在此类函数中添加{{3} },$_POST$_GET,因为$_REQUEST的含义不同。而且,它的存在方式不同,与它们不同。

$_SESSION本身可能会实现类似此函数的功能。

答案 1 :(得分:1)

我更喜欢使用NULL,因为它表示空或没有数据。

function ObtainRequest($Field, $Method) {
  $Method = strtoupper($Method);
  if ($Method == "POST")
    return = isset($_POST[$Field]) ? $_POST[$Field] : NULL;
  else if ($Method == "GET")
    return = isset($_GET[$Field]) ? $_GET[$Field] : NULL;
  else
    return isset($_REQUEST[$Field]) ? $_REQUEST[$Field] : NULL;
}

现在,您可以使用此方法:

if (ObtainRequest("OneField","POST") != NULL) {
  DoSomething();
} else if (ObtainRequest("OneField","POST") == NULL) {
  DoOtherthing();
}

答案 2 :(得分:0)

我可以看到你使用post而不是POST的第一个问题...

是的,你也可以用会话这样做,但代码需要稍微修改一下..