PHP优化:表单变量
假设我有一个包含30个字段的表单。我试图想出一种优化解决方案的方法,在服务器端检查是否所有这些字段都是空的或包含特定值,并相应地检查它们 因此,1个变量的代码如下所示:PHP优化:表单变量,php,Php,假设我有一个包含30个字段的表单。我试图想出一种优化解决方案的方法,在服务器端检查是否所有这些字段都是空的或包含特定值,并相应地检查它们 因此,1个变量的代码如下所示: if((!isset($_POST['usa_state_list'])) || (strcmp($_POST['usa_state_list'],'undefined') == 0)) { $usa_state_list = ''; } else { $usa_state_list = $_POST['usa_
if((!isset($_POST['usa_state_list'])) || (strcmp($_POST['usa_state_list'],'undefined') == 0)) {
$usa_state_list = '';
}
else {
$usa_state_list = $_POST['usa_state_list'];
}
现在想象一下其中的30个字段,您必须有30个if
语句。你对如何优化这个有什么想法吗?切换还是换循环?
注意:让我们继续这个例子,我检查字段是空的还是包含undefined
字符串
谢谢只需创建一个函数并反复使用它。我刚刚举了一个简单的例子(没有经过测试): 内置的只是有点冗长:
$usa_state_list = filter_form(INPUT_POST, 'usa_state_list');
。。。但由于您需要进行一些自定义后处理,并且需要输出各个变量,因此我认为最好只编写自己的:
function post($name) {
$value = filter_input(INPUT_POST, $name);
if ($value!=='undefined') {
return $value;
} else {
return '';
}
}
$usa_state_list = post('usa_state_list');
当然,如果您认为代码易读性适用于WIMP,那么天空就是极限:
foreach (
[
'usa_state_list',
'foo',
'bar',
] as $name
) {
$$name = post($name);
}
只是;-)奎?我知道什么是函数…:PAh,很简单,谢谢tim!这确实帮了大忙。:)然后呢
preg_replace
?有趣的是,如果我没有设置清洁功能,我也会因此而受到谴责。:)每个人都有自己的偏好;没有什么能取悦所有人。你可能读了好几个小时关于清理输入的文章,但仍然感到困惑。PHP有一些好的方面:老实说,我实际上在想strip\u slashes()
(对不起!)。但将任意表单输入作为HTML处理是一个令人惊讶的常见误解。@alvarog.Vicario-Ha!是的,如果我加入了strip\u slashes()
我就应该被骂一顿我找不到filter\u表单
函数的任何文档,但是,我找到了filter\u输入
::的文档。在这里进行清理是否重要?我正在使用MySqli编写的语句。至于你的“专业代码”,我从来没有见过这样的代码,所以我现在最好离你远点:)我刚刚修正了拼写错误,谢谢你注意到了。至于消毒,我的建议是你永远不要盲目地去做。你必须知道你想保护自己不受什么伤害。
foreach (
[
'usa_state_list',
'foo',
'bar',
] as $name
) {
$$name = post($name);
}