6月19 使用tp框架生成验证码及文件上传

ThinkPHP中自带能生成验证码的类:ThinkPHP/Library/Think/Verify.class.php

默认情况下,验证码的字体是随机使用 ThinkPHP/Library/Think/Verify/ttfs/目录下面的字体文件,我们可以指定验证码的字体

汉字的验证码:ThinkPHP/Library/Think/Verify/zhttfs/添加中文的字体格式

更改字体:ttf格式

关于验证码的一些知识点:

1.例题:通过验证码实现用户的登录,并利用jquery实现点击图片验证码进行新的刷新

LoginController.class.php(Login方法和yzm方法)

<?php
namespace Home\Controller;
use Think\Controller;
class LoginController extends Controller
{
    public function Login()
    {
        if(empty($_POST))
        {
            $this->display();
        }
        else
        {
            //判断验证码是否正确
            $code = $_POST["yzm"];
            $verify = new \Think\Verify();
            if($verify->check($code))
            {
                if($_POST["uid"]!="")
                {
                    $model = D("users");        

                    $uid = $_POST["uid"];
                    $pwd = $_POST["pwd"];

                    $attr = $model->field("Pwd")->find($uid);
                    //echo $attr["pwd"];

                    if($pwd == $attr["pwd"])
                    {
                        session("uid",$uid);
                        $this->success("登录成功","Main");
                    }
                    else
                    {
                        $this->error("登录失败");
                    }
                }
                else
                {
                    $this->error("登录失败");
                }

            }
            else
            {
                $this->error("验证码错误");
            }
        }
    }

    //生成验证码的操作
    public function yzm()
    {
        $config =    array(
        ‘fontSize‘    =>    30,    // 验证码字体大小
        //‘length‘      =>    3,     // 验证码位数
        //‘useNoise‘    =>    false, // 关闭验证码杂点
        ‘imageW‘  => 300,
        ‘imageH‘  => 90,
        ‘useZh‘ => true,
        ‘fontttf‘ => ‘STXINWEI.TTF‘,
        );

        $Verify = new \Think\Verify($config);
        //$Verify->fontttf = ‘7.ttf‘;  // 验证码字体使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
        $Verify->entry();
    }
}

Login.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script src="../../../../../jquery-1.11.2.min.js"></script>
</head>

<body>
<h1>在这里登录好了</h1>
<form action="__ACTION__" method="post">
<div>用户名:<input type="text" name="uid" /></div>
<div>密码:<input type="password" name="pwd" /></div>
<div>验证码:<input type="text" name="yzm" /><img id="yzm" src="__CONTROLLER__/yzm" /></div>
<input type="submit" value="登录" />

</form>
</body>
</html>
<script type="text/javascript">
$(document).ready(function(e) {
    $("#yzm").click(function(){
        //点击图片验证码改变
        $(this).attr("src","__CONTROLLER__/yzm");

        })
});
</script>

显示效果:

当其中一个输入错误时都不能实现登录:

2.文件上传

文件上传使用Think/Upload.class.php

关于savePath和rootPath

1.rootPath文件上传保存的根路径(一开始要规定的)$upload->rootPath = ‘./Public/‘;

2.savePath文件上传的保存路径(相对于根路径) $upload->savePath = ‘Uploads/‘; // 设置附件上传目录

//3. 上传成功 获取上传文件信息,$info遍历上传的路径
foreach($info as $file)
{
echo $file[‘savepath‘].$file[‘savename‘];
}

输出的结果:Uploads/2016-06-20/slide3.jpg

4.$upload->saveName = ‘‘;//保持上传文件名不变

命名规则:

2例子:文件上传:

LoginController.class.php中的方法ShangChu

    //文件上传
    public function ShangChuan()
    {
         if(empty($_FILES))
         {
             $this->display();
         }
         else
         {
              $upload = new \Think\Upload();// 实例化上传类
              $upload->maxSize = 3145728 ;// 设置附件上传大小
              $upload->exts = array(‘jpg‘, ‘gif‘, ‘png‘, ‘jpeg‘);// 设置附件上传类型
              $upload->rootPath = ‘./Public/‘;
              $upload->savePath = ‘Uploads/‘; // 设置附件上传目录
              $upload->saveName = ‘‘;//保持上传文件名不变

              // 上传文件
              $info = $upload->upload();
              //var_dump($info);

              if(!$info)
              {
                   $this->error($upload->getError());
              }
              else
              {
                  // 上传成功 获取上传文件信息
                  foreach($info as $file)
                  {
                          echo $file[‘savepath‘].$file[‘savename‘];
                           //$this->success(‘上传成功!‘);
                  }
              }

         }
    }

ShangChu.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>文件上传</title>
</head>

<body>
<form action="__ACTION__" enctype="multipart/form-data" method="post" >

<input type="file" name="photo" />
<input type="submit" value="提交" >

</form>
</body>
</html>

最后的结果是:

Public文件夹下新建的Upload目录下的

时间: 2024-10-14 00:12:08

6月19 使用tp框架生成验证码及文件上传的相关文章

ThinkPHP3验证码、文件上传、缩略图、分页(自定义工具类、session和cookie)

验证码 TP框架中自带了验证码类 位置:Think/verify.class.php 在LoginController控制器中创建生存验证码的方法 login.html登陆模板中 在LoginController控制器中判断验证码是否正确并且判断登陆是否成功 文件上传 用到的知识点: 1.文件上传的时候,要设置表单的enctype属性 2.$_FILE[名字][]用来接收文件的信息 第二维的字段: name size error type tmp_name 3.move_uploaded_fil

ThinkPHP讲解(十一)——验证码和文件上传

一.验证码 1.页面前端显示 (验证码是图片标签,来源是控制器里的yzm()操作方法) <h1>登录</h1> <form action="__ACTION__" method="post"> <div>用户名:<input type="text" name="uid"/></div> <div>密码:<input type="

Thinkphp 验证码、文件上传

一.验证码 验证码参数 例题:登录时验证下验证码 LoginController.class.php <?php namespace Home\Controller; use Think\Controller; class LoginController extends Controller { public function Login() { if(empty($_POST)) { $this->display(); } else { //判断验证码是否正确 $code = $_POST[

引用开源框架通过AsyncHttpClient进行文件上传

一.步骤: 1.添加权限(访问网络权限和读写权限) 2.获取上传文件路径并判断是否为空 3.若不为空,创建异步请求对象 4.创建上传文件路径 5.执行post请求(指定url路径,封装上传参数,新建AsyncHttpResponseHandler方法) 二.查看参考文档 三.实例项目解析 运行效果如下:       在本地文件夹中查看是否获取到图片,如下图显示 重点代码:均有详细解析,请认真查看注释 1.在AndroidManifest.xml中添加权限 <uses-permission and

MVC+WCF框架下广告位管理——文件上传

广告位是网站中必不可少的内容之一,也是能直接给我们网站带来经济收益的内容之一.好的广告位不仅不会强宾压主,而会为我们的网站锦上添花,起到画龙点睛的作用,因此设计好广告位也是开发过程中一大重要环节. 最近在做一个珠宝检测站的项目,其中管理页面就涉及到了广告位管理,之前项目中也有不少有广告位的,但都不是自己负责.其大致思路就是要从管理页面上传相应的图片,并且要保存到数据库,然后从所有上传过的图片中选择一张显示到网站首页.原理并不太难,但是鉴于性能问题,我们只需要数据库保存图片的路径即可. 重点是在M

封装了okhttp的网络框架,支持大文件上传下载,上传进度...

本帖最后由 anjoy紫外线 于 2016-4-20 16:42 编辑   1.用法 对于Eclipse不能运行项目的,提供了apk供直接运行,位于项目根目录 okhttputils_v1.x.x.apk. 本项目Demo的网络请求是我自己的服务器,有时候可能不稳定,网速比较慢时请耐心等待.. 对于Android Studio的用户,可以选择添加: compile 'com.lzy.net:okhttputils:1.3.0'  //可以单独使用,不需要依赖下方的扩展包    compile'c

Spring框架——day04参数校验和文件上传

一,参数校验 springmvc中我们可以使用第三方的校验框架来实现请求参数的校验,常用hibernate的校验框架validation 1.pom中导入所需依赖 hibernate-validator-4.3.2.Final.jar jboss-logging-3.1.0.CR2.jar validation-api-1.0.0.GA.jar 2.配置验证器 <!-- 配置验证器 --> <bean id="myvalidator" class="org.

Spring 4 官方文档学习(十一)Web MVC 框架之multipart(文件上传)支持

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-multipart 1.简介 Spring内置的multipart支持会处理web应用中的文件上传.你可以启用该支持 -- 通过可插拔的MultipartResolver对象们,它们都是定义在 org.springframework.web.multipart 包中.Spring提供了一个MultipartResolver实

0802验证码,文件上传