tp5学习笔记一一SESSION和COOKIE、分页、验证码、文件上传、图像处理

十一、SESSION和COOKIE
1.session
配置文件配置session的前缀、驱动方式(存储类型)、是否开启

session => [
    'prefix'         => 'think',    // 前缀
    'type'           => '',         // 驱动方式 支持redis memcache memcached
    'auto_start'     => true,       // 是否自动开启 SESSION
],

命名空间:use think\Session
相关方法:
Session::set() //赋值,参数一:键;参数二:值;参数三:作用域(可选,默认当前作用域)
Session::has() //判断是否赋值
Session::get() //取值,不存在时返回null
Session::prefix() //指定当前作用域
Session::delete() //删除值
Session::clear() //清除session

助手函数:session()
session(‘键’,‘值’):赋值
session(’?键’):判断是否赋值
session(‘键’):取值
session(null):清除
页面渲染:{$Request.session.键}

2.cookie
配置文件配置cookie

'cookie' => [
    'prefix'         => 'think',    // 前缀
    'expire'         => 0           // 保存时间
    'path'           => '/'         // 保存路径
    'domain'         => ''          // 有效域名
    'secure'         => false       // 是否启用安全传输
    'httponly'       => ''          //httponly设置
    'setcookie'      => true        // 是否使用 setcookie
],

命名空间:use think\Cookie
Cookie::set(‘键’,‘值’,[‘前缀’,‘有效期’]) //赋值[指定前缀,有效期]
Cookie::get(‘键’,[‘前缀’]) //获取[指定前缀的]值
Cookie::has(‘键’,[‘前缀’]) //判断[指定前缀的]是否赋值
Cookie::delete(‘键’,[‘前缀’]) //删除[指定前缀的]cookie
Cookie::clear(‘前缀’) //清空指定前缀的cookie,无前缀时不能清空
Cookie::forever()//永久保存cookie
十二、分页
1.使用方法:

$list = Db::name('user')->where('status',1)->paginate(10);

paginate方法:paginate($listRows,$simple,$config)
参数:$listRows:每页数量。数组表示配置参数。
$simple:是否简洁模式或者总记录数。如果为true,则为简洁模式,只有上一页和下一页。
$config:配置参数。具体可以自己传入或在配置文件中配置。

$config 参数具体配置

参数描述
list_rows每页数量
page当前页
pathurl路径
queryurl额外参数
fragmenturl锚点
var_page分页变量
type分页类名

2.模板渲染

{volist name='list' id='user'}
    {$user.nickname}
{/volist}
{$list->render()}

十三、验证码
1.下载安装类库
thinkphp\vendor\topthink\think-capcha
2.验证码配置

$config = [
   'seKey'    => 'ThinkPHP.CN',   // 验证码加密密钥
   'codeSet'  => '数组字母',       // 验证码字符集合
   '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,            // 验证成功后是否重置
];

3.模板中显示

<div>{:captcha_img()}div>

<div><img src="{:captcha_src()}" alt="captcha" />div>

4.验证码检测
(1)助手函数:

captcha_check($code)

(2)

$captcha = new Captcha();
if (!$captcha->check(input($code))){
   return $this->error("验证码错误");
}

十四、文件上传
1.表单代码

<form action="/index/index/upload" enctype="multipart/form-data" method="post">
    <input type="file" name="image" /> <br> 
    <input type="submit" value="上传" /> 
</form> 

2.后台方法

public function upload(){
    // 获取表单上传文件 例如上传了001.jpg
    $file = request()->file('image');
    // 移动到框架应用根目录/uploads/ 目录下
    $info = $file->validate(['size'=>15678,'ext'=>'jpg,png,gif'])
                 ->rule('md5')
                 ->move( '../uploads');
    if($info){
        // 成功上传后,获取上传信息
        echo $info->getExtension();    //返回原图名称的图片地址
        echo $info->getSaveName();     //返回含有目录的被加密的图片地址
        echo $info->getFilename();    //返回不含有目录的被加密的图片地址
    }else{
        // 上传失败获取错误信息
        echo $file->getError();
    }
}

(1)validate()方法:对上传文件的验证,包括文件大小、后缀。如果上传文件验证不通过,则move方法返回false。

size上传文件的最大字节
ext文件后缀,多个用逗号分割或者数组

(2)rule()方法:上传的文件按照一定规则生成文件名。

date根据日期和微秒数生成
md5对文件使用md5_file散列生成
sha1对文件使用sha1_file散列生成

十五、图片处理
1.获取图像文件

$image = \think\Image::open('./image.png');

$image = \think\Image::open(request()->file('image'));

2.获取图像信息

$image = \think\Image::open('./image.png');
$width = $image->width();    // 返回图片的宽度 
$height = $image->height();  // 返回图片的高度 
$type = $image->type();      // 返回图片的类型 
$mime = $image->mime();      // 返回图片的mime类型
$size = $image->size();      // 返回图片的尺寸数组。0:图片宽度,1:图片高度 

(1)裁剪图
crop(长,宽[,坐标x,坐标y])方法:裁剪图片,和save()方法配合使用。

//将图片裁剪为300x300并保存为crop.png 
$image->crop(300, 300)->save('./crop.png');

save()方法:保存图像。

pathname必填项图像保存路径名称
type默认与原图相同图像类型
quality80图像质量
interlacetrue是否对JPEG类型图像设置隔行扫描

(2)缩略图
thumb(长,宽[,常量])方法:生成缩略图

// 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.png
$image->thumb(150,150,\think\Image::THUMB_CENTER)->save('./thumb.png');
常量含义
THUMB_SCALING等比例缩放1
THUMB_FILLED缩放后填充2
THUMB_CENTER居中裁剪3
THUMB_NORTHWEST左上角裁剪4
THUMB_SOUTHEAST右下角裁剪5
THUMB_FIXED固定尺寸缩放6

(3)图像翻转
flip()方法:对图像进行翻转,默认是X轴;传入参数\think\image::FLIP_Y,则以Y轴翻转。

// 对图像进行以x轴进行翻转操作 
$image->flip()->save('./filp_image.png');

(4)图像旋转
rotate()方法:对图像进行旋转,默认是顺时针旋转90度。

// 对图像使用默认的顺时针旋转90度操作 
$image->rotate()->save('./rotate_image.png');

(5)添加水印
a.图片水印
water(水印图片[,水印位置,透明度])方法:添加图片水印。

常量位置
WATER_NORTHWEST左上角1
WATER_NORTH上居中2
WATER_NORTHEAST右上角3
WATER_WEST左居中4
WATER_CENTER居中5
WATER_EAST右居中6
WATER_SOUTHWEST左下角7
WATER_SOUTH下居中8
WATER_SOUTHEAST右下角9
// 给原图左上角添加透明度为50的水印并保存alpha_image.png 
$image->water('./logo.png',\think\Image::WATER_NORTHWEST,50)->save('alpha_image.png');

b.文字水印
text()方法:添加文字水印,需要放置一个字体文件到入口目录中。

text不能为空添加的文字
font不能为空字体文件路径
size不能为空字号,单位是像素
color#00000000文字颜色
locateWATER_SOUTHEAST文字写入位置
offset0文字相对当前位置的偏移量
angle0文字倾斜角度
// 给原图左上角添加水印并保存water_image.png
$image->text('文字','字体文件',20,'#ffffff')->save('text_image.png');
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值