4.3. 接收输入参数

一个程序往往都需要接收输入参数,然后根据用户的输入做出相应的操作,但是用户的参数输入往往是不可靠的,我们需要对输入参数做严格的过滤和审核才能保证程序的安全性。bzfshop 提供了集成的参数验证机制,方便你直接调用,下面我们修改 Index.php 的代码,如下:

Index.php. 

namespace Controller\Test;

use Core\Helper\Utility\Validator;

class Index extends \Controller\BaseController
{

    public function get($f3)
    {
        // 从 GET 中取得参数
        $validator = new Validator($f3->get('GET'));

        // 验证参数的合法性
        $goods_id =
            $validator->required('参数不能为空')->digits('参数必须是数字')->min(10, true, '参数必须大于等于10')->validate('goods_id');

        if (!$this->validate($validator)) {
            goto out_fail;
        }

        echo '参数验证成功';
        return; // 成功从这里返回

        out_fail: // 失败从这里退出

        // 打印出错消息
        $flashMessageArray = $this->getFlashMessageArray();
        foreach ($flashMessageArray as $flashMessage) {
            echo $flashMessage . "\n";
        }
    }

    public function post($f3)
    {
        $this->get($f3);
    }

}

bzfshop 集成了一个 Validator 用于做参数验证,它提供各种验证规则甚至包括正则表达式匹配验证,具体请自己查看 Validator 的代码。上面的代码可以看到,我们采用 Validator 验证参数 $goods_id 不能为空、必须全数字、必须大于等于 10 。如果验证失败,则跳出显示出错信息。现在访问http://192.168.2.100/PHPStorm/bzfshop-opensource/src/Test/Index?goods_id=aaa,变换 goods_id不同的值就能看到不同的出错提示了。

[警告]

电子商务程序,安全为第一位考虑。对所有的输入参数一定要做验证,确保输入参数都是安全可靠的,如果没有参数验证将会是一个巨大的安全隐患。