2009-08-30 20 views
7

$_GET['username']のようなGET値が関数のパラメータとして含まれていないコードで、私は馬鹿げています。

いつ関数にパラメータとしてPOSTメソッドとGETメソッドを含める必要がありますか?

+2

本当の質問は何ですか?最後に疑問符が付いた唯一の文章(傷ついていますが)は意味をなさない。 $ _GETと$ _POSTはグローバルで、どこでも使用できます。それは良いコーディング練習ですか、おそらく、多分、そうでないかもしれません。 –

答えて

24

とき、あなたはPOST を含めると 関数にパラメータとしてメソッドをGETする必要がありますか?

私は「決して」言わないだろう:$_GET$_POSTsuperglobalsと呼ばれるものです:彼らは、スクリプト全体に存在します。関数/メソッドの内部に存在することを意味します。

特に、globalというキーワードは必要ありません。


しかし、あなたの関数/メソッドの中に頼ることは、非常に悪いことです。あなたの関数/メソッドは、一般にパラメータとして渡されないものに依存しないのが一般的です。

私が言っていることは、最初のもので、あなたは2つのパラメータを渡す必要はありません...しかし、その機能は独立したことがないであろうと動作しません、

function check_login_password() 
{ 
    $login = $_GET['login']; 
    $password = $_GET['password']; 
    // Work with $login and $password 
} 

/** 
* Check login and password 
* 
* @param $login string 
* @param $password string 
* @return boolean 
*/ 
function check_login_password($login, $password) 
{ 
    // Work with $login and $password 
} 

OK:これら二つの機能を考えます$_GETから来ていないログイン/パスワードを確認しなければならない状況では、

第2の機能では、呼び出し元が正しいパラメータを渡す必要があります。それは彼らがあなたが望むところから来ることができるということを意味しています。その機能は常にその仕事をすることができます。

1

$ _GETおよび$ _POSTはグローバル変数です。彼らはメソッドではない値を持っています。 関数に送る値は、その値です。クラス/関数は、データがどこから来るのかといったように、それらの外側にあるものは一般に認識できません。多くの場合、関数内でグローバル変数を使用するためのショートカットを使用し、関数の使いやすさを制限します。

0

グローバル変数(コード内のすべての場所でアクセス可能)であるため、関数パラメータとして送信する必要はありません。

ただし、コードでフィルタを使用する前に、フィルタリングして検証することをお勧めします。