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)

セッションにも適用できますか?

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

2 番目の問題は、変数ではisset()使用できるが、関数の結果では使用できないことです。代わりにブール チェックを使用します。

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

セッションにも適用できますか?

私の意見に興味があるなら、私 そのような関数を、 、と混ぜませ。 の意味が異なるからです。また、それらのようではなく、別の方法で存在します。$_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 に答える