我意识到这是一个非常古老的职位,但这里的,如果有人正在寻找一个答案。
有不使用于$ _ 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