0

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();
}

但是我的脚本没有运行(SHOWING PLANK PAGE)...

我的错误是什么?

2)

$_REQUEST函数内部丢失了?

此代码有效!:

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

此代码不起作用!:

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

此代码不起作用!:

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

3)

它也适用于 Session 吗?

4

3 回答 3

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 吗?

好吧,如果您对我的意见感兴趣:不会 此类功能与,和混合,因为s 含义不同。而且,它的存在方式不同,不像它们。$_SESSION $_POST$_GET$_REQUEST$_SESSION

然而,类似这个功能的东西可能会自己实现$_SESSION

于 2013-09-25T20:34:48.310 回答
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();
}
于 2013-09-26T19:05:51.340 回答
0

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

是的,您也可以使用会话来执行此操作,但是需要稍微修改代码..

于 2013-09-25T20:34:30.680 回答