私はこれが非常に古い記事であることを認識していますが、誰かが探していると答えがあります。
$ _POSTの抽出を使用せずにこれを自動化する安全な方法があります。これは前述のセキュリティリスクです。この関数は、あなたが期待する単純なキーの配列を与えるなら、$ _POSTのために働きます。
function post_params($arr){
$pp = array();
foreach($arr AS $key){
if(isset($_POST[$key])){
$pp[$key] = $_POST[$key];
}
}
return $pp;
}
その後、関数を呼び出す際に、この操作を行います。(あなたにも$ _POSTのために、このようにそれを行うことができます)あなたがそうのような余分な施策のカップルを取ることができます$ _GETのために
$expected_post_keys = array('firstname','lastname');
$safe_post_arr = post_params($expected_post_keys);
extract($safe_post_arr);
を:
function get_params($arr){
// arr predefined explicitly - do not call with _GET as argument
$gp = array();
foreach($arr as $key){
if(isset($_GET[$key])){
$gp[$key] = htmlspecialchars($_GET[$key]);
}else{
$gp[$key] = 0;
}
}
return $gp;
}
と関数を呼び出す:
$valid_get_keys = array('id','action');
$safe_get_arr = get_params($valid_get_keys);
extract($safe_get_arr);
このメソッドはあなたが期待するすべての変数/キーを提供しますが、$ _GETで定義されていない場合は0の値を持ちます。
これを頻繁に行う必要がある場合は、あなたは自動化されています。 _GETまたは_POSTを取得してクラスを呼び出す必要のあるスクリプトでは、必要なキーを入力することによって、必要なメソッドを呼び出すことができます。
これらは、最初は通常の変数です。 –
メソッドPOSTを持つフォームとそのアクションは、GET変数とGET変数の両方を送ることができます。 EG:
あなたは 'register_globals'を求めています。悪いOP!さらに、 '/foo.php?bar = baz'にポストするのはどうですか? $ _GETと$ _POSTがあります。 – cmbuckley