thinkphp 5.0 验证器 杂项

验证器

是为了在输入到数据库的时候进行验证用的

  • 首先要导入验证类,并且实例化。
use think\Validate;
//代码编写,这里是用的是独立操作,注意学习验证规则
$validate = new Validate([
    'name'  => 'require|max:25',
    'email' => 'email'
]);
$data = [
    'name'  => 'thinkphp',
    'email' => 'thinkphp@qq.com'
];
if (!$validate->check($data)) {
    dump($validate->getError());
}

写带自己验证内容提醒的,验证器,用这个就够了,别的以后研究

$rule = [
    'name'  => 'require|max:25',
    'age'   => 'number|between:1,120',
    'email' => 'email',
];
$msg = [
    'name.require' => '名称必须',
    'name.max'     => '名称最多不能超过25个字符',
    'age.number'   => '年龄必须是数字',
    'age.between'  => '年龄必须在1~120之间',
    'email'        => '邮箱格式错误',
];
$data = [
    'name'  => 'thinkphp',
    'age'   => 121,
    'email' => 'thinkphp@qq.com',
];
$validate = new Validate($rule,$msg);
$result   = $validate->check($data);
if(!$result){
    echo $validate->getError();
}

利用封装来操作

简单的理解就是,在mvc以为,在建立文件夹,封装起来,等着调用

namespace app\index\validate;
use think\Validate;
class User extends Validate
{
    protected $rule = [
        'name'  =>  'require|max:25',
        'email' =>  'email',
    ];
    protected $message = [
        'name.require'  =>  '用户名必须',
        'email' =>  '邮箱格式错误',
    ];
}

//然后在控制器中调用
$data = input('post.');
//实例化新建的验证器
$vali = new \app\index\validate\Admin;
//在验证
if($vali->check($data)){
    //这里写插入语句
}else{
    dump($vali->get#rror())
}

缓存

他的用法是把经常调用的数据放起来,读库之前先判断,如果有就读缓存,如果没有就读库
//缓存的设置,在config.php里面设置
'cache'                  => [
// 驱动方式
'type'   => 'File',
// 缓存保存目录
'path'   => CACHE_PATH,
// 缓存前缀
'prefix' => '',
// 缓存有效期 0表示永久缓存
'expire' => 0,
],

具体使用

1,导入缓存类
    use think\Cache;
2,用系统类设置,这里要先获取数据才可以,包括获取,添加,删除等操作
    Cache::set('name',$value,new DateTime('2017-10-1 12:00'));
3,读取缓存
    dump(Cache::get('name')); 
    //如果name值不存在,则默认返回 false。
    //支持指定默认值,例如:
    dump(Cache::get('name','')); 
4,删除缓存
    //删除缓存
    Cache::rm('name'); 
    //获取并删除缓存
    Cache::pull('name'); 
    //如果name值不存在,则返回null。
    //清空缓存
    Cache::clear(); 
5,也可以用助手函数
    $options = [
         // 缓存类型为File
        'type'   => 'File', 
         // 缓存有效期为永久有效
        'expire' => 0,
         // 指定缓存目录
        'path'   => APP_PATH . 'runtime/cache/', 
    ];
    // 缓存初始化
    // 不进行缓存初始化的话,默认使用配置文件中的缓存配置
    cache($options);
    // 设置缓存数据
    cache('name', $value, 3600);
    // 获取缓存数据
    var_dump(cache('name'));
    // 删除缓存数据
    cache('name', NULL);
    // 设置缓存的同时并且进行参数设置
    cache('test', $value, $options); 

Session

需要导入session类
use think\Session;
a)设置session
    // 赋值(当前作用域)
    Session::set('name','thinkphp');
    // 赋值think作用域
    Session::set('name','thinkphp','think');
b)获取session
    // 取值(当前作用域)
    Session::get('name');
    // 取值think作用域
    Session::get('name','think')
c)判断是否存在
    // 判断(当前作用域)是否赋值
    Session::has('name');
    // 判断think作用域下面是否赋值
    Session::has('name','think');
d)删除session
    // 删除(当前作用域)
    Session::delete('name');
    // 删除think作用域下面的值
    Session::delete('name','think');
    // 指定当前作用域
    Session::prefix('think');
    // 取值并删除
    Session::pull('name');
    如果name的值不存在,返回Null// 清除session(当前作用域)
    Session::clear();
    // 清除think作用域
    Session::clear('think');
e)用助手函数操作
    // 初始化session
    session([
        'prefix'     => 'module',
        'type'       => '',
        'auto_start' => true,
    ]);
    // 赋值(当前作用域)
    session('name', 'thinkphp');
    // 赋值think作用域
    session('name', 'thinkphp', 'think');
    // 判断(当前作用域)是否赋值
    session('?name');
    // 取值(当前作用域)
    session('name');
    // 取值think作用域
    session('name', '', 'think');
    // 删除(当前作用域)
    session('name', null);
    // 清除session(当前作用域)
    session(null);
    // 清除think作用域
    session(null, 'think');
cookie没有session安全,登陆信息用session,其他信息用cookie
a)设置cookie 先导入cookie类
    // 设置Cookie 有效期为 3600秒
    Cookie::set('name','value',3600);
    // 设置cookie 前缀为think_
    Cookie::set('name','value',['prefix'=>'think_','expire'=>3600]);
    // 支持数组
    Cookie::set('name',[1,2,3]);
b)判断cookie
    Cookie::has('name');
    // 判断指定前缀的cookie值是否存在
    Cookie::has('name','think_');
c)获取cookie
    Cookie::get('name');
    // 获取指定前缀的cookie值
    Cookie::get('name','think_');
d)删除cookie
    Cookie::delete('name');
    // 删除指定前缀的cookie
    Cookie::delete('name','think_');
    // 清空指定前缀的cookie
    Cookie::clear('think_')
e)用助手函数
    // 初始化
    cookie(['prefix' => 'think_', 'expire' => 3600]);
    // 设置
    cookie('name', 'value', 3600);
    // 获取
    echo cookie('name');
    // 删除
    cookie('name', null);
    // 清除
    cookie(null, 'think_');

系统分页

下面是代码直接复制,使用就行
a)控制器代码
    // 查询状态为1的用户数据 并且每页显示10条数据
    $list = User::where('status',1)->paginate(10,true);//这个事简洁书写
    $list = Db::name('user')->where('status',1)->paginate(10);
    // 把分页数据赋值给模板变量list
    $this->assign('list', $list);
    // 渲染模板输出
    return $this->fetch();
b)页面中代码(注意练习),也可以简洁书写
    <div>
        <ul>
            {volist name='list' id='user'}
                <li> {$user.nickname}</li>
            {/volist}
        </ul>
    </div>
{$list->render()}

文件上传

a)导入请求类,
use think\Request;
b)页面编写
    <form action="/index/index/upload" enctype="multipart/form-data" method="post">
        <input type="file" name="image" /> <br> 
        <input type="submit" value="上传" /> 
    </form> 
c)控制器书写
    public function upload(){
        // 获取表单上传文件 例如上传了001.jpg
        //这里可以用别方法,目的是获取上传的信息
        $file = request()->file('image');
        // 移动到框架应用根目录/public/uploads/ 目录下
        if($file){
            $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads');
            if($info){
                // 成功上传后 获取上传信息
                // 输出 jpg
                echo $info->getExtension();
                // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
                echo $info->getSaveName();
                // 输出 42a79759f284b767dfcb2a0197904287.jpg
                echo $info->getFilename(); 
            }else{
                // 上传失败获取错误信息
                echo $file->getError();
            }
        }
    }
d)多文件上传(直接看手册)

验证码

a)首先判断系统支持验证码,不支持就安装扩展
b)使用验证码
    模版内验证码的显示
    <div>{:captcha_img()}</div>
    或者
    <div><img src="{:captcha_src()}" alt="captcha" /></div>
c)验证
    使用TP5的内置验证功能,添加captcha验证规则即可    
        $this->validate($data,[
            'captcha|验证码'=>'require|captcha'
        ]);
    或者手动验证
        if(!captcha_check($captcha)){
         //验证失败
        };
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

两个人的幸福online

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值