请求

浏览数 101930
YiluPHP框架自带一个input的辅助类 /helper/input.php,封装了获取请求参数和校验参数有校性的方法,使用方法也很简单,不需要引入也不需要配置,直接通过 $app 对象就可以调用,我们提到过$app是全局变量,所以如果在类和函数中,需要先使用 global 引用进来再使用,其它地方不需要应用就可以直接使用,比如controller和视图模板中就可以直接使用。
获取一个GET方法的参数 name 可以这样
$name = $app->input->get('name', 'Jim');
PHP
第二个参数为默认值,可选项,当name参数不存在或者没有值时就返回默认值。
input类的其它方法如下
/**
     * @name 获取GET方法提交过来参数值
     * @desc
     * @param string $key 参数名
     * @param string $default 如果参数没有值,则以此为默认值
     * @return string
     */
    public function get($key, $default=null)

/**
     * @name 获取POST方法提交过来参数值
     * @desc
     * @param string $key 参数名
     * @param string $default 如果参数没有值,则以此为默认值
     * @return string
     */
    public function post($key, $default=null)

/**
     * @name 获取POST或GET方法提交过来参数值
     * @desc
     * @param string $key 参数名
     * @param string $default 如果参数没有值,则以此为默认值
     * @return string
     */
    public function request($key, $default=null)

/**
     * @name 获取GET方法提交过来参数值(整数)
     * @desc
     * @param string $key 参数名
     * @param string $default 如果参数没有值,则以此为默认值
     * @return string
     */
    public function get_int($key, $default=null)

/**
     * @name 获取POST方法提交过来参数值(整数)
     * @desc
     * @param string $key 参数名
     * @param string $default 如果参数没有值,则以此为默认值
     * @return string
     */
    public function post_int($key, $default=null)

/**
     * @name 获取POST或GET方法提交过来参数值(整数)
     * @desc
     * @param string $key 参数名
     * @param string $default 如果参数没有值,则以此为默认值
     * @return string
     */
    public function request_int($key, $default=null)

/**
     * @name 获取GET方法提交过来参数值,去掉前后的空格
     * @desc
     * @param string $key 参数名
     * @param string $default 如果参数没有值,则以此为默认值
     * @return string
     */
    public function get_trim($key, $default=null)

/**
     * @name 获取POST方法提交过来参数值,去掉前后的空格
     * @desc
     * @param string $key 参数名
     * @param string $default 如果参数没有值,则以此为默认值
     * @return string
     */
    public function post_trim($key, $default=null)

/**
     * @name 获取POST或GET方法提交过来参数值,去掉前后的空格
     * @desc
     * @param string $key 参数名
     * @param string $default 如果参数没有值,则以此为默认值
     * @return string
     */
    public function request_trim($key, $default=null)

/**
     * @name 验证表单提交过来参数及值
     * @desc
     * @param array $rules 参数名
     * @param array $error_message 自定义错误信息
     * @param array $error_code 自定义错误码
     * @return array string
     */
    public function validate($rules, $error_message=[], $error_code=[])

//validate是功能更加强大的方法,下面重点介绍
PHP

校验参数的validate方法
我们可以看到validate的第一个参数是必选的,第二和第三个参数是可选的,下面我们用一个例子来解说validate的用法
$params = $app->input->validate(
    [
        'title' => 'required|trim|string|min:3|max:10|return',
        'user_email' => 'trim|email|return',
        'password1' => 'required|trim|string|min:6|max:20|rsa_encrypt|return',
        'password2' => 'required|trim|equal:password1|rsa_encrypt',
        'status' => 'required|integer|min:0|max:1|return',
    ],
    [
        'title.*' => '标题填写不正确',
        'user_email.*' => '请填写正确的Email',
        'password1.*' => '密码长度最小6位,最长20位',
        'password2.*' => '两次填写的密码不一致',
        'status.*' => '请选择状态',
    ],
    [
        'title.*' => 1,
        'user_email.*' => 2,
        'password1.*' => 3,
        'password2.*' => 4,
        'status.*' => 5,
    ]);
PHP

这个例子里接收校验了5个参数:
第一个参数 title 设置了6个校验规则,其中required表示这个参数必选,trim表示需要去除首尾空格,string表示按字符串规则校验这个参数,min:3表示这个参数最小长度为3个字(注意是字不是字符,一个汉字就是一个字),max:10表示这个参数最大长度为10个字,return表示校验完成后需要返回这个参数及其值给 $params 变量
第二个参数 user_email 设置了3个校验规则,与第一个参数不一样的 email 表示这个参数的值需要按Email的规则校验其格式,这是一个可选参数,因为没有设置required参数,即可以不传这个参数,也可以参数的值为空字符串。
第三个参数 password1 是一个密码字符串,密码长度在6-20位字,这个参数的规则当中的 rsa_encrypt 表示这是一个需要使用RSA方法加密的参数,即前端使用RSA公钥加密后传给服务器,这里会先使用RSA私钥解密后再校验其它的规则,然后返回解密后的密码字符串给 $params 变量。
第四个参数 password2 也确认密码,因此它也需要加密传输,有 rsa_encrypt 规则,它需要与 password1 一致,因此给它设置了 equal:password1 的规则,两个密码一样,不需要返回这个参数,因此没有 return 规则。
第五个参数 status 为必选,规则 integer 表示它的值必须为整数,mix:0表示它的值最小为0,max:1表示它的值最大为1,需要返回这么参数给 $params 变量。
如果5个参数中任何一个参数校验失败就会报错,返回 validate 方法第二个中对应的错误信息和第三个参数中对应的错误码,validate 方法的第二和第三个参数为可选项,如果不传这两个参数则会有系统默认的错误码和错误信息。如果这5个参数校验都通过了,则会返回设置了return规则的参数及值给 $params 变量,是一个数组,格式形式如下:
$params = [
        'title' => 'YiluPHP',
        'user_email' => 'demo@qq.com',
        'password1' => 'pd123456',
        'status' => 1
];
PHP

下面列出所有可用的校验规则
  required   这个参数是必选的
  numeric   这个参数是数字类型
  integer   这个参数是整数类型
  string   这个参数是字符串类型
  array   这个参数是数组类型
  email   这个参数是Email
  json   这个参数是JSON字符串
  equal:{param_name}    这个参数需要与另一个参数{param_name}的值一致
  rsa_encrypt    这个参数需要使用RSA方法加密,RSA的加密和设置方法在下文介绍
  return   校验通过后返回这个参数及值
  trim   这个参数需要去除首尾空格
  min:{number}    如果是字符串表示允许最小的长度为{number},如果是数字表示允许最小的数值为{number}
  max:{number}    如果是字符串表示允许最大的长度为{number},如果是数字表示允许最大的数值为{number}
如上面的举例,多个规则使用竖杆分隔。

RSA的设置和加解密方法
RSA是一种非对称加密算法,需要生成一对公钥和私钥,前端使用公钥加密字符串,服务器端使用私钥解密字符串,使用公钥是无法解密的,这就是非对称加密的优点。参数使用非对称加密可以防止数据在网络传输过程中被人拦截偷取,YiluPHP框架中自带一个RSA的加密示例,就是welcome页面中的提交 mobile参数的测试,也就是说框架中已经提供了一对公钥和私钥,存放路径是
/document/rsa_private_key.pem
/document/rsa_public_key.pem
HTML
私钥是不能对外公开的,因此你需要重新生成一对安全的公钥和私钥,然后把自带的文件替换掉,如果你重新生成的文件名不一样或存放路径也不一样,则需要修改配置信息 rsa_private_key 和 rsa_public_key,使配置与文件路径对应起来。生成公私钥的方法在框架中也有提供
/document/生成RSA公钥和私钥的方法.txt
HTML


评论(0
还没有人评论哦
我来说说