热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

 验证码

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

简单的显示:

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

实现点击验证码进行切换&#xff1a;

1 <form action&#61;"{:url(&#39;index/ii&#39;)}" method&#61;"post">
2
3 <input type&#61;"text" name&#61;"check" style&#61;"height: 36px;padding-top: 0px;" autocomplete&#61;"off">
4
5 <img src&#61;"{:captcha_src()}" onClick&#61;"this.src&#61;&#39;{:captcha_src()}&#39;" alt&#61;"captcha" style&#61;"height: 36px ;width: 110px;border: 1px solid #584C4D;vertical-align:middle" />
6
7 <br/><br/>
8 <input type&#61;"submit" value&#61;"提交">
9
10 form>

控制器里处理验证码&#xff1a;

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

 

文件上传

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

单文件&#xff1a;

1 <form action&#61;"{:url(&#39;xiao/xiao2&#39;)}" method&#61;"post" enctype&#61;"multipart/form-data">
2
3 <input type&#61;"file" name&#61;"filex1">
4 <input type&#61;"submit" value&#61;"东小东上传">
5
6 form>

1 php
2 namespace app\index\controller;
3
4 class Xiao
5 {
6 public function xiao2(){
7
8 // 获取表单上传文件 ,filex1为表单填写的名字
9 $filex &#61; request()->file("filex1");
10
11
12 if($filex){
13
14 //获取到上传原文件的名字
15 echo $filex->getInfo()["name"];
16 echo "--
";
17
18 //移动到/public/uploads/目录下&#xff0c;DS表示根据系统确定的目录分隔符"/"或“\”
19 $info &#61; $filex->move(ROOT_PATH . &#39;public&#39; . DS . &#39;uploads&#39;);
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 }}}

多文件&#xff1a;

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

1 <form action&#61;"http://localhost:8080/ATP5/public/index/xiao/xiao2" method&#61;"post" enctype&#61;"multipart/form-data">
2
3 <input type&#61;"file" name&#61;"filex1[]">
4 <br/>
5 <input type&#61;"file" name&#61;"filex1[]">
6 <br/>
7 <input type&#61;"file" name&#61;"filex1[]">
8 <br/>
9 <input type&#61;"submit" value&#61;"东小东上传">
10 form>

1 php
2 namespace app\index\controller;
3
4 class Xiao
5 {
6 public function xiao2(){
7 // 获取表单上传文件 ,filex1为表单填写的名字
8 $filess &#61; request()->file("filex1");
9
10 //文件数组的遍历
11 foreach($filess as $filex){
12
13
14 //移动方法1&#xff1a;按照系统规则实现文件保存
15 //$info &#61; $filex->move(ROOT_PATH . &#39;public&#39; . DS . &#39;uploads&#39;);
16
17 //移动方法2&#xff1a;保留原文件名&#xff0c;如果重名会覆盖
18 $info&#61;$filex->move(ROOT_PATH . &#39;public&#39; . DS . &#39;uploads&#39;,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 }}

 

图片处理

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

1 php
2 namespace app\index\controller;
3 use think\Request;
4 use think\Image;
5 class Xiao
6 {
7 public function xiao2(){
8
9 //打开public目录下的图片
10 $image &#61;Image::open(&#39;./rr.jpg&#39;);
11
12 //直接获取到上传的图片文件内容
13 //$image &#61;Image::open(request()->file(&#39;上传的文件表单名&#39;));
14
15 //-----------------获取图片信息------------
16
17 // 返回图片的宽度
18 $width &#61; $image->width();
19
20 // 返回图片的高度
21 $height &#61; $image->height();
22
23 // 返回图片的类型,如jpeg
24 $type &#61; $image->type();
25
26 // 返回图片的mime类型&#xff0c;如&#xff1a;image/jpeg
27 $mime &#61; $image->mime();
28
29 // 返回图片的尺寸数组 0 图片宽度 1 图片高度
30 $size &#61; $image->size();
31 dump($size) ;
32
33 //----------------------------------------
34
35 //--------------图片处理-------------------
36
37 //裁剪
38 //更改的是原&#xff0c;无需赋值&#xff0c;且会迭代操作&#xff0c;如第二次裁剪会在第一次的基础上进行
39
40 //从位置&#xff08;0,0&#xff09;裁剪&#xff08;宽度&#xff0c;高度&#xff09;并保存到public中
41 //$image->crop(100, 200)->save(&#39;./crop1.png&#39;);
42
43 //从位置&#xff08;0,20&#xff09;裁剪&#xff08;宽度&#xff0c;高度&#xff09;并保存到public中
44 //$image->crop(200, 100,0,20)->save(&#39;./crop2.png&#39;);
45
46 //压缩
47 //等比例压缩&#xff0c;如最大为150*150
48 //$image->thumb(150, 150)->save(&#39;./thumb1.png&#39;);
49
50 //等比例裁剪&#xff0c;如果不能到达标准150*150时&#xff0c;将进行图片裁剪
51 /*
52 //常量&#xff0c;标识缩略图居中裁剪类型
53 const THUMB_CENTER &#61; 3;
54 //常量&#xff0c;标识缩略图左上角裁剪类型
55 const THUMB_NORTHWEST &#61; 4;
56 //常量&#xff0c;标识缩略图右下角裁剪类型
57 const THUMB_SOUTHEAST &#61; 5;
58 */
59 //$image->thumb(150,150,Image::THUMB_CENTER)->save(&#39;./thumb.png&#39;);
60
61 //为图片上水印
62 /*
63 //常量&#xff0c;标识左上角水印
64 const WATER_NORTHWEST &#61; 1;
65 //常量&#xff0c;标识上居中水印
66 const WATER_NORTH &#61; 2;
67 //常量&#xff0c;标识右上角水印
68 const WATER_NORTHEAST &#61; 3;
69 //常量&#xff0c;标识左居中水印
70 const WATER_WEST &#61; 4;
71 //常量&#xff0c;标识居中水印
72 const WATER_CENTER &#61; 5;
73 //常量&#xff0c;标识右居中水印
74 const WATER_EAST &#61; 6;
75 //常量&#xff0c;标识左下角水印
76 const WATER_SOUTHWEST &#61; 7;
77 //常量&#xff0c;标识下居中水印
78 const WATER_SOUTH &#61; 8;
79 //常量&#xff0c;标识右下角水印
80 const WATER_SOUTHEAST &#61; 9;
81 */
82 //图片水印
83 //参数1为水印图片地址&#xff0c;参数2为水印位置&#xff0c;参数3为透明度[0,100],100为原图
84 $image->water(&#39;./thumb.png&#39;,Image::WATER_NORTHWEST,10)->save(&#39;img/water_image.png&#39;);
85
86 //文字水印
87 //参数&#xff08;文字内容&#xff0c;文字字体&#xff0c;大小&#xff0c;RGB,位置&#xff0c;相对位置偏移量,旋转&#xff09;
88 $image->text(&#39;东小东&#39;,&#39;font/tt.ttf&#39;,30,&#39;#ff00ff&#39;,Image::WATER_SOUTHEAST,-20)->save(&#39;img/text_image1.png&#39;);
89
90 }
91 }

 


 

转:https://www.cnblogs.com/dongxiaodong/p/10270168.html



推荐阅读
  • 本文讨论了在ASP中创建RazorFunctions.cshtml文件时出现的问题,即ASP.global_asax不存在于命名空间ASP中。文章提供了解决该问题的代码示例,并详细解释了代码中涉及的关键概念,如HttpContext、Request和RouteData等。通过阅读本文,读者可以了解如何解决该问题并理解相关的ASP概念。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • python限制递归次数(python最大公约数递归)
    本文目录一览:1、python为什么要进行递归限制 ... [详细]
  • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
  • SpringBoot简单日志配置
     在生产环境中,只打印error级别的错误,在测试环境中,可以调成debugapplication.properties文件##默认使用logbacklogging.level.r ... [详细]
  • 本文介绍了一个Magento模块,其主要功能是实现前台用户利用表单给管理员发送邮件。通过阅读该模块的代码,可以了解到一些有关Magento的细节,例如如何获取系统标签id、如何使用Magento默认的提示信息以及如何使用smtp服务等。文章还提到了安装SMTP Pro插件的方法,并给出了前台页面的代码示例。 ... [详细]
  • 【爬虫】关于企业信用信息公示系统加速乐最新反爬虫机制
    ( ̄▽ ̄)~又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构。升级后网站的层次结构并没有太多变化,表面上 ... [详细]
  • 使用这个技巧要达到的目标:一般来说,模型和控制器你都不会有相同的类名字。让我先创建一个取名为post的model。classPostextendsModel{}现在 ... [详细]
  • 目前正在做毕业设计,一个关于校园服务的app,我会抽取已完成的相关代码写到文章里。一是为了造福这个曾经帮助过我的社区,二是写文章的同时更能巩固相关知识的记忆。一、前言在爬取教务系统 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
author-avatar
亿达口香糖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有