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 } ? ? (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |