加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

PHP之ThinkPHP框架(验证码、文件上传、图片处理)

发布时间:2021-05-21 07:06:01 所属栏目:大数据 来源: https://www.jb51.cc
导读:?验证码 验证码是框架自带有的,比之前使用GD库简单方便许多,其实现原理基本相似,都是生成图片,保存验证码值到Session中,表单提交验证码,然后进行值的对比验证。 简单的显示: 1 form action ="{:url('index/ii')}" method ="post" 2 3 !-- 验证码显示

?验证码

验证码是框架自带有的,比之前使用GD库简单方便许多,其实现原理基本相似,都是生成图片,保存验证码值到Session中,表单提交验证码,然后进行值的对比验证。

简单的显示:

 1 <form action="{:url('index/ii')}" method="post">
 2 
 3    <!--验证码显示方法1--> 
 4    img src="{:captcha_src()}" alt="captcha" style="height: 80px ;width: 200px" />
 5     
 6    br 7     
 8     验证码显示方法2 9    div>{:captcha_img()}</> 
10       
11    12     
13    请输入验证码:input type="text" name="check"14       
15    16     
17    ="submit" value="提交">    
18     
19 form>

实现点击验证码进行切换:

="check"="height: 36px;padding-top: 0px;" autocomplete="off">  
 4 
 5     onClick="this.src='{:captcha_src()}'"  alt  style="height: 36px ;width: 110px;border: 1px solid #584C4D;vertical-align:middle"  6 
 7    />< 8     9 
10 >

控制器里处理验证码:

 1     //获取到post传递的验证码
 2     //不区分大小写
 3     $checks=Request::instance()->post("check");
 5     if(!captcha_check($checks)){
 6         验证失败
 7         echo "验证码输入错误";
 8 
 9       }else{
10 
11         echo "验证码输入成功"12     }

?

文件上传

文件上传,支持单文件和多文件,上传的文件会自动保存在public下自动创建的目录中,并返回一系列结果。

单文件:

1 ="{:url('xiao/xiao2')}"="post" enctype="multipart/form-data"2      
3   ="file"="filex1"4   ="东小东上传"5 
6  >
 1 <?PHP
namespace appindexcontroller;
 3 
 4 class Xiao
 5  6     public function xiao2(){
 7 
 8          获取表单上传文件,filex1为表单填写的名字
 9         $filex = request()->file("filex1"10     
11         
12         if($filex){
13 
14             获取到上传原文件的名字
15             echo $filex->getInfo()["name"]; 
16             echo "--<br/>"17     
18             移动到/public/uploads/目录下,DS表示根据系统确定的目录分隔符"/"或“”
19             $info = $filex->move(ROOT_PATH . 'public' . DS . 'uploads'20             $info21     
22                  成功上传后 获取上传信息
23                 //文件的后缀
24                 // 如输出 jpg
25                 $info->getExtension()."<br>"26     
27                 保存后的路径
28                 // 如输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
29                 $info->getSaveName()."<br>"30     
31                保存后的文件名
32                // 如输出 42a79759f284b767dfcb2a0197904287.jpg
33                $info->getFilename()."<br>"34     
35             }36 
37                 上传失败获取错误信息
38                $filex->getError();
39 
40             }
41 }}}

多文件:

实现是利用了数组的原理进行的,上传时将文件内容保存到数组中,处理是通过数组的遍历进行取存。利用数组进行多文件上传,更具扩展性

="http://localhost:8080/ATP5/public/index/xiao/xiao2" 2      
 3      ="filex1[]" 4       br/ 5       6         7       8         9       7           8          $filess = request()-> 9     
10          //文件数组的遍历
11          foreach($filess as 12 
13     
14           移动方法1:按照系统规则实现文件保存
15           //$info = $filex->move(ROOT_PATH . 'public' . DS . 'uploads');
17           //移动方法2:保留原文件名,如果重名会覆盖
18           $info=$filex->move(ROOT_PATH . 'public' . DS . 'uploads',iconv("utf-8","gbk",]));
19           if($info){
21 
22                               // 如输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
24                25     
27            }28 
29                30                31            32          33 }}

?

图片处理

图片处理集成方法可以实现图片信息的获取、图片的裁剪、图片的压缩、图片上水印等,其操作的图片目录均为public目录下,必须加载?use thinkImage;模块

 3 use thinkRequest;
 thinkImage;
 6  7      8         
 9               打开public目录下的图片
10               $image =Image::open('./rr.jpg'11 
12               直接获取到上传的图片文件内容
13               //$image =Image::open(request()->file('上传的文件表单名'));
14 
             //-----------------获取图片信息------------
16 
             // 返回图片的宽度
18              $width = $image->width();
19 
20               返回图片的高度
21              $height = height();
22 
23              返回图片的类型,如jpeg
24             $type = type();
25 
26              返回图片的mime类型,如:image/jpeg
27             $mime = mime();
29              返回图片的尺寸数组 0 图片宽度 1 图片高度
30             $size = size();
31             dump($size) ;    
32 
33             ----------------------------------------
34 
35             //--------------图片处理-------------------
37            //裁剪
38            //更改的是原,无需赋值,且会迭代操作,如第二次裁剪会在第一次的基础上进行
40            //从位置(0,0)裁剪(宽度,高度)并保存到public中    
41            //$image->crop(100,200)->save('./crop1.png');
42         
43 44            //$image->crop(200,100,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 }

?


?

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读