0

if isset($_GET['whatever'])...if ステートメントの残りの部分の前に試されています。E_NOTICEエラーはオフにするのに便利な方法であり、$_POST変数についてはinitスクリプトに解決策があります..

$POST = (is_array( $_POST ) && count( $_POST ) > 0);

これにより、自己投稿スクリプトがきれいに見えるようになります。

if ($POST) {
    // now do something with $_POST...
}

キーが何であるかわからない場合、これを動的に行う方法がわかりませんか? $_GET変数について同様の解決策を見つけるのを手伝ってくれる人はいますか?

編集:

if ($_GET['whatever'] == "whatever");設定されておらず、E_NOTICEエラーがない場合は、単に false を返したいだけです。

編集:

不明確な場合は申し訳ありませんが、解決策を探している$_GETわけではありません。達成したいことの例として$_POSTのみ使用しています。$_POST

4

8 に答える 8

10

時々私はグローバルGET関数を使用します:

function GET($key, $default = null) {
    return isset($_GET[$key]) ? $_GET[$key] : $default;
}
于 2010-08-31T19:25:00.787 に答える
2

すでに回答されていますが、言及されていないため、次のことも試してください。

$var = filter_input(INPUT_GET, 'varname');

それが存在しない場合は、迷惑な配列通知なしで null を返し、さまざまな方法で潜在的な悪いものを除外します。参照: http://www.php.net/filter

于 2010-08-31T21:10:45.433 に答える
2

この混乱の主な考え方は単純です。プログラム内のすべての変数は、使用する前に初期化する必要があります。
したがって、最善の方法は、すべての変数をスクリプトの一番上などに集中的に設定することです。

しかし、いくつかの異なるケースがあります。あなたが投稿したケースでは、これらのどれも必要ありませんが、

if ($_SERVER['REQUEST_METHOD'] == "POST")
于 2010-08-31T19:20:03.533 に答える
1

これを行う関数を作成できます。

function getVar($item){
    return isset($_GET[$item]) ? $_GET[$item] : '';
}

その後、あなたはすることができますif(getVar('whatever') == "whatever")

于 2010-08-31T19:25:20.473 に答える
1

2 つの方法を次に示します。

/*
* Makes any request keys into variables of the same name
*/
foreach($_GET AS $key => $value) {
    ${$key} = ($value);
}    

//Assuming a input key of $_GET['whatever'] 
echo $whatever;

/*
* Casting to an object
*/
$get = (object) $_GET;

//Assuming a input key of $_GET['whatever'] 
echo $get->whatever

私が考えることができる 3 番目のオプションは、$_GET を独自のクラスにすることです。PHP のオーバーロードは、これを行うための便利なトリックです。

http://php.net/manual/en/language.oop5.overloading.php

これを示す例を書きたいとは思いませんでした。:)

于 2010-08-31T21:00:17.230 に答える
0

単純getvalueが設定されているかどうかを確認したい場合は、次の手順を実行する必要があります。そうでない場合は、別の手順を実行します。

私は最初の答えが好きですが、それがあなたのために働くかどうかそれをチェックする必要があります

if(isset($ _ GET ['whatever']){if($ _GET ['whatever'] == "whatever");{//残りを行う}else{//残りを行う}}

私が思うものがあなたの必要性であるならば、それが助けになることを願っています

于 2010-08-31T19:32:57.407 に答える
0
  • 短い
  • 予告なし

    $key = &$_POST['key'];

このように(関数内で)廃止され、エラーが表示されます:

function f($s){}
f(&$_POST['key']);

致命的なエラー: 呼び出し時の参照渡しが削除されました

于 2011-09-23T13:33:32.623 に答える
-1

この種のスクリプトを書くとき、私は通常、上部で次のようなことをします。

$submitted = isset($_POST['submit']) ? true : false;
$username = isset($_POST['username']) ? $_POST['username'] : null;
$password = isset($_POST['password']) ? $_POST['password'] : null;
(etc.)

次に、値をテストすると、次のようになります。

if ($submitted)
{
    if ($username && $password)
    {
        // do stuff with username and password including testing their values
    }
}

それは私にとってはかなりうまくいくようです。

于 2010-08-31T19:31:13.053 に答える