验证码
验证码是框架自带有的,比之前使用GD库简单方便许多,其实现原理基本相似,都是生成图片,保存验证码值到Session中,表单提交验证码,然后进行值的对比验证。
简单的显示:
复制代码
1
复制代码
实现点击验证码进行切换:
复制代码
1
复制代码
控制器里处理验证码:
复制代码
1 //获取到post传递的验证码
2 //不区分大小写
3 $checks=Request::instance()->post("check");
4
5 if(!captcha_check($checks)){
6 //验证失败
7 echo "验证码输入错误";
8
9 }else{
10
11 echo "验证码输入成功";
12 }
复制代码
文件上传
文件上传,支持单文件和多文件,上传的文件会自动保存在public下自动创建的目录中,并返回一系列结果。
单文件:
复制代码
1
复制代码
复制代码
1 file("filex1");
10
11
12 if($filex){
13
14 //获取到上传原文件的名字
15 echo $filex->getInfo()["name"];
16 echo "--
";
17
18 //移动到/public/uploads/目录下,DS表示根据系统确定的目录分隔符"/"或“\”
19 $info = $filex->move(ROOT_PATH . 'public' . DS . 'uploads');
20 if($info){
21
22 // 成功上传后 获取上传信息
23 //文件的后缀
24 // 如输出 jpg
25 echo $info->getExtension()."
";
26
27 //保存后的路径
28 // 如输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
29 echo $info->getSaveName()."
";
30
31 //保存后的文件名
32 // 如输出 42a79759f284b767dfcb2a0197904287.jpg
33 echo $info->getFilename()."
";
34
35 }else{
36
37 // 上传失败获取错误信息
38 echo $filex->getError();
39
40 }
41 }}}
复制代码
多文件:
实现是利用了数组的原理进行的,上传时将文件内容保存到数组中,处理是通过数组的遍历进行取存。利用数组进行多文件上传,更具扩展性
复制代码
1
复制代码
复制代码
1 file("filex1");
9
10 //文件数组的遍历
11 foreach($filess as $filex){
12
13
14 //移动方法1:按照系统规则实现文件保存
15 //$info = $filex->move(ROOT_PATH . 'public' . DS . 'uploads');
16
17 //移动方法2:保留原文件名,如果重名会覆盖
18 $info=$filex->move(ROOT_PATH . 'public' . DS . 'uploads',iconv("utf-8","gbk",$filex->getInfo()["name"]));
19 if($info){
21
22 //保存后的路径
23 // 如输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
24 echo $info->getSaveName()."
";
25
26
27 }else{
28
29 // 上传失败获取错误信息
30 echo $filex->getError();
31 }
32 }
33 }}
复制代码
图片处理
图片处理集成方法可以实现图片信息的获取、图片的裁剪、图片的压缩、图片上水印等,其操作的图片目录均为public目录下,必须加载 use think\Image;模块
复制代码
1 file('上传的文件表单名'));
14
15 //-----------------获取图片信息------------
16
17 // 返回图片的宽度
18 $width = $image->width();
19
20 // 返回图片的高度
21 $height = $image->height();
22
23 // 返回图片的类型,如jpeg
24 $type = $image->type();
25
26 // 返回图片的mime类型,如:image/jpeg
27 $mime = $image->mime();
28
29 // 返回图片的尺寸数组 0 图片宽度 1 图片高度
30 $size = $image->size();
31 dump($size) ;
32
33 //----------------------------------------
34
35 //--------------图片处理-------------------
36
37 //裁剪
38 //更改的是原,无需赋值,且会迭代操作,如第二次裁剪会在第一次的基础上进行
39
40 //从位置(0,0)裁剪(宽度,高度)并保存到public中
41 //$image->crop(100, 200)->save('./crop1.png');
42
43 //从位置(0,20)裁剪(宽度,高度)并保存到public中
44 //$image->crop(200, 100,0,20)->save('./crop2.png');
45
46 //压缩
47 //等比例压缩,如最大为150*150
48 //$image->thumb(150, 150)->save('./thumb1.png');
49
50 //等比例裁剪,如果不能到达标准150*150时,将进行图片裁剪
51 /*
52 //常量,标识缩略图居中裁剪类型
53 const THUMB_CENTER = 3;
54 //常量,标识缩略图左上角裁剪类型
55 const THUMB_NORTHWEST = 4;
56 //常量,标识缩略图右下角裁剪类型
57 const THUMB_SOUTHEAST = 5;
58 */
59 //$image->thumb(150,150,Image::THUMB_CENTER)->save('./thumb.png');
60
61 //为图片上水印
62 /*
63 //常量,标识左上角水印
64 const WATER_NORTHWEST = 1;
65 //常量,标识上居中水印
66 const WATER_NORTH = 2;
67 //常量,标识右上角水印
68 const WATER_NORTHEAST = 3;
69 //常量,标识左居中水印
70 const WATER_WEST = 4;
71 //常量,标识居中水印
72 const WATER_CENTER = 5;
73 //常量,标识右居中水印
74 const WATER_EAST = 6;
75 //常量,标识左下角水印
76 const WATER_SOUTHWEST = 7;
77 //常量,标识下居中水印
78 const WATER_SOUTH = 8;
79 //常量,标识右下角水印
80 const WATER_SOUTHEAST = 9;
81 */
82 //图片水印
83 //参数1为水印图片地址,参数2为水印位置,参数3为透明度[0,100],100为原图
84 $image->water('./thumb.png',Image::WATER_NORTHWEST,10)->save('img/water_image.png');
85
86 //文字水印
87 //参数(文字内容,文字字体,大小,RGB,位置,相对位置偏移量,旋转)
88 $image->text('东小东','font/tt.ttf',30,'#ff00ff',Image::WATER_SOUTHEAST,-20)->save('img/text_image1.png');
89
90 }
91 }https://www.cnblogs.com/dongxiaodong/p/10270168.html
