我意識到這是一個非常古老的職位,但這裏的,如果有人正在尋找一個答案。
有不使用於$ _ POST,這是因爲提到安全風險提取自動完成此一個安全的方式。如果你給它一個簡單的你想要的鍵數組,這個函數可以用於$ _POST。
function post_params($arr){
$pp = array();
foreach($arr AS $key){
if(isset($_POST[$key])){
$pp[$key] = $_POST[$key];
}
}
return $pp;
}
然後當你調用該函數,這樣做:
$expected_post_keys = array('firstname','lastname');
$safe_post_arr = post_params($expected_post_keys);
extract($safe_post_arr);
爲$ _GET你可以採取一些額外的措施,像這樣(你可以爲$ _ POST做這種方式爲好) :
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的任何腳本都可以調用該類,然後通過爲其提供必要的鍵來調用所需的任何方法。
他們擺在首位正常的變量。 – 2012-04-18 09:03:27
具有方法POST的表單及其操作具有GET變量可以發送GET和POST變量......只是說。 EG:
您要求提供'register_globals'。壞OP!另外,如何發佈到'/foo.php?bar = baz'?然後你會有$ _GET和$ _POST。 – cmbuckley 2012-04-18 09:09:17