tp5学习笔记9

1、验证器

1) 控制器中使用验证器

        // 实例化验证器类

        $validate=new Validate(
            [
                "username"=>"require|length:6,12",
                "password"=>"require|confirm:repassword"
            ],
            [
                "username.require"=>'用户名不存在',
                "username.length"=>'用户名长度不满足',
                "password.require"=>'密码不存在',
                "password.confirm"=>'两次密码不一致',
            ]
        );

        // 接收用户提交的数据
        $data=input("post.");

        // 进行验证
        if ($validate->check($data)) {

        }else{
            dump($validate->getError());
        }

1、缓存

a) 缓存的作用:

    减少数据库压力
    用户交互比较

b) TP对缓存的支持

    支持的缓存类型包括file、memcache、wincache、sqlite、redis和xcache。

c) 缓存设置(C:\AppServ\www\tp5\application\config.php)

    'cache'                  => [
        // 驱动方式
        'type'   => 'File',
        // 缓存保存目录
        'path'   => CACHE_PATH,
        // 缓存前缀
        'prefix' => '',
        // 缓存有效期 0表示永久缓存
        'expire' => 0,
    ],

d) 使用

    1、设置缓存

        Cache::set(名字,值,时间);
        cache(名字,值,时间);

        # 返回值 如果设置成功 true
        # 如果设置失败 false
    2、读取缓存

        Cache::get(名字);
        cache(名字);

        # 返回值 如果获取成功 获取到的数据
        # 如果获取失败 false

    3、删除缓存

        Cache::rm('UserData');
        cache('UserData',NULL);

        # 返回值 删除成功 true
        # 删除失败 false

    4、清空缓存

        Cache::clear();

        # 返回值 清空缓存成功 true 否则 false
    5、使用缓存

        // 从缓存中获取数据

        if ($data=cache('UserData')) {

            // 如果数据存在

        }else{
            // 如果缓存中没有数据
            $data=Db::table('User')->select();

            cache('UserData',$data,20);
        }

2、Session

1、设置session

    Session::set('name','云知梦');

    session('name','100');

2、获取session

    Session::get('name');
    session('name');

    # 返回值 如果获取成功 返回获取到的值 如果失败 NULL

3、判断是否设置

    Session::has('name1');
    session("?name"); 

    # 返回值 如果存在返回True 如果不存在 false

4、删除session

    Session::delete('data');
    session('name',null);

    # 删除session 无返回值

5、清空session

    Session::clear();
    session(null);

3、Cookie

1、设置Cookie

    Cookie::set('name','云知梦');
    Cookie::set('info','云知梦只为有梦想的人',50);

    cookie('time','2017-10-25');
    cookie('age',5,50);

2、获取Cookie

    Cookie::get('name');
    cookie('time');

    # 获取Cookie 如果成功 返回获取值,如果失败返回NULL

3、判断Cookie

    Cookie::has('name');
    cookie("?name");

    # 判断cookie是否设置,如果设置返回true,如果没有设置返回false

4、删除Cookie

    Cookie::delete('name');
    cookie('name',null);

5、清空Cookie

    Cookie::clear();
    cookie(null);

4、分页

1、控制器中如何书写

    // 查询数据
    // 分页效果
    $data=Db::table('user')->paginate(3);
    // 简化的分页效果
    $data=Db::table('user')->paginate(3,true);

    // 分配数据
    $this->assign('data',$data);

    // 加载页面
    return $this->fetch();

2、页面中如何书写
    {volist name="data" id="val"}
        <tr>
            <td>{$val.id}</td>
            <td>{$val.name}</td>
            <td>{$val.pass}</td>
        </tr>

    {/volist}

    {$data->render()}

5、文件上传

1、页面
    <form action="{:url('upload')}" method="post" enctype="multipart/form-data">
        <p>
            File:
            <input type="file" name="file" id="">
        </p>
        <p>
            <input type="submit" value="提交">
        </p>
    </form>

2、控制器

    public function upload(Request $request){

        // 接收数据
        $file=$request->file('file');

        // 进行文件上传
        if ($info=$file->move('./upload/')) {
            dump($info->getsaveName());
        }else{
            dump($info->getError());
        }
    }

6、验证码

1、首先判断系统是否支持验证码

2、使用

    1) 页面中

        <form action="{:url('check')}" method="post">
            <!-- {:captcha_img()} -->
            <img src="{:captcha_src()}" alt="">
            <input type="text" name="code" id="">
            <input type="submit" value="提交">
        </form>
    2) 判断验证码
        $code=input('post.code');

        // 判断验证码是否正确
        if (captcha_check($code)) {
            echo "okokok";
        }else{
            echo "error";
        }
3、验证码相关设置
    'captcha'=>[

        'codeSet'  => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
        // 验证码字符集合
        'expire'   => 1800,
        // 验证码过期时间(s)
        'useZh'    => false,
        // 使用中文验证码
        'zhSet'    => '们以我',
        // 中文验证码字符串
        'useImgBg' => false,
        // 使用背景图片
        'fontSize' => 25,
        // 验证码字体大小(px)
        'useCurve' => true,
        // 是否画混淆曲线
        'useNoise' => true,
        // 是否添加杂点
        'imageH'   => 0,
        // 验证码图片高度
        'imageW'   => 0,
        // 验证码图片宽度
        'length'   => 5,
        // 验证码位数
        'fontttf'  => '',
        // 验证码字体,不设置随机获取
        'bg'       => [243, 251, 254],
        // 背景颜色
        'reset'    => true,
        // 验证成功后是否重置

    ]

7、图片处理

1、读取图片

    $images=Image::open("./img/c.jpg");

2、获取基本信息
    // 宽度
    dump($images->width());
    // 高度
    dump($images->height());
    // 类型
    dump($images->type());
    // 宽和高
    dump($images->size());
    // mime
    dump($images->mime());

3、图片裁剪

    crop(100,200,300,350);
    // 从(300,350)的位置开始裁剪,裁剪100,200 大小,默认从(0,0)位置开始裁剪

    // 裁剪默认从顶点开始裁剪
        $images->crop(300,300)->save("./img/cai.jpg");
    // 设置裁剪位置
        $images->crop(300,300,100,100)->save('./img/cai1.jpg');

4、图片缩放

    // 图片缩放 默认是等比例缩放,可以进行设置

    // //常量,标识缩略图等比例缩放类型
    // constTHUMB_SCALING???=?1
    // //常量,标识缩略图缩放后填充类型
    // constTHUMB_FILLED????=?2;
    // //常量,标识缩略图居中裁剪类型
    // constTHUMB_CENTER????=?3;
    // //常量,标识缩略图左上角裁剪类型
    // constTHUMB_NORTHWEST?=?4;
    // //常量,标识缩略图右下角裁剪类型
    // constTHUMB_SOUTHEAST?=?5;
    // //常量,标识缩略图固定尺寸缩放类型
    // constTHUMB_FIXED?????=?6;

    $images->thumb(300,300,2)->save('./img/th.jpg');

5、图片翻转

    $images->flip()->save("./img/fan.jpg");

6、图片旋转

    $images->rotate(180)->save("./img/xuan.jpg");

7、水印

    // 图片水印
        $images->water("./img/logo.png",5,50)->save("./img/water.jpg");

    // 文字水印

        $images->text('123',"msyh.ttf",20,"#ff0000")->save('./img/text.jpg');
  • thinkCMF上传图片

    thinkCMF上传图片 1、要使用这个功能,首先要引入框架自带的admin.js或者frontend.js文件 再上传的地方添加 1234567891011121314151617181920212223242526...

    thinkCMF上传图片
  • 小程序开发

    小程序开发 获取access_token要将申请的测试号的appid和secret填在相应的位置,而不是填公众号的appid和secret。

    小程序开发
  • global与GLOBAL区别

    global与GLOBAL区别 1.有些场合需要全局变量的出现,如下例子:<?php$name=”why”;//定义变量name,并初始化function echoName(){//试图引用函数外面的变量echo “m...

    global与GLOBAL区别
  • PHP取整

    PHP取整 1.直接取整,舍弃小数,保留整数:intval($a);2.四舍五入取整:round($a);3.向上取整,有小数就加1:ceil($a);4.向下取整:floor($a)。

    PHP取整
  • 为什么PHP变量以$开头

    PHP变量 ​ Because PHP was based on Perl which used $, though the symbols Perl used were meaningful andplenty us...

    为什么PHP变量以$开头
  • PHP超全局变量

    PHP超全局变量 PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。 PHP 超级全局变量列表: $GLOBALS $G...

    PHP超全局变量
  • 面试准备

    PHP面试题目 1、阿里PHP面试​ https://blog.csdn.net/qishouzhang/article/details/47007177 1、get与post的区别​ 最直观的区别就是GET把参数...

    面试准备
  • tp5学习笔记8

    tp5学习笔记8 1、视图a) 加载页面 1、继承系统控制器类 return $this->fetch(参数1,参数2,参数3,参数4); 参数1(字符串): 模板...

    tp5学习笔记8
  • tp5学习笔记7

    tp5学习笔记7 1、模型(model)数据模型 2、新建数据模型​ 1) 手动新建 在model目录下 新建 User.php // 声明命名空间 namespace a...

    tp5学习笔记7
  • tp5学习笔记6

    tp5学习笔记6 1、TP5.0 支持数据库类型1Mysql、SqlServer、PgSQL、Sqlite等数据库的支持。 2、如何连接数据库1、配置文件定义 a、配置文件目录 /var/www/t...

    tp5学习笔记6