微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用php进行有效的表单处理

我正在某个项目上,我想处理来自多个模板中表单的请求.问题是如何在处理脚本中调用适当的功能.虽然,我已经编码了一段时间,但仍然无法提出比在隐藏字段中使用变量更好的方法

if ($_POST['somehiddenfield'] == 1) {
   some_function_1();//doesnt matter if its a function or a method
}

if ($_POST['somehiddenfield'] == 2) {
   $mainclass->somemethod();
}
//goes on indefinitely

另外,我想将所有内容保存在单个处理程序文件中,在该文件中将调用我的主类.因此,有没有一种比使用if … else更有效的方法

解决方法:

我将使用所有可能的选项对key => value数组进行硬编码.传递隐藏的输入字段,检查您的帖子值和硬编码选项的键之间是否有任何交集,并将任何匹配的值作为函数调用.

$map = [
    'yourHiddenField' => 'myFunctionName',
    'anotherHiddenField' => 'myOtherFunctionName',
    'yourOtherHiddenField' => 'yetAnotherfunctionName',
];

$intersection = array_intersect(array_keys($map), array_keys($_POST));

foreach ($intersection as $key) {
    $this->{$map[$key])();
}

代码尚未经过测试.

编辑:
在允许运行任何输入时,请务必谨慎,不要预先定义应允许运行的功能.

即使进行消毒也可能有多危险的示例:

class Test {
    public $i = 1;

    function __construct(){
        $this->i++;
    }
}

$formVariable = '__construct';

$t = new test();

$t->{$formVariable}();

echo $t->i;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐