• ThinkPHP简单的验证码实现


    ThinkPHP简单的验证码实现

    写一个最简单的TP验证码。

    • 写Controller

    首先在Controller/IndexController.class.php(简称Index)文件中编辑:

     1 <?php  
     2 namespace HomeController;  
     3 use ThinkController;  
     4 use ThinkVerify;//这个类一定记得引用  
     5 class IndexController extends Controller {  
     6     public function index(){  
     7         $this->redirect('login');//重定向至login方法  
     8     }  
     9       
    10     /*验证码*/  
    11     public function verify(){  
    12         $verify=new Verify();//新建一个验证码  
    13         $verify->entry();//输出验证码  
    14     }  
    15       
    16     /*登陆*/  
    17     public function login(){  
    18         $this->display();//调用对应模板中的login.html  
    19     }  
    20       
    21     /*登陆验证*/  
    22     public function login_do(){  
    23         $code=I('code');  
    24         $verify=new Verify();  
    25         if($verify->check($code)){  
    26             $this->success("验证成功");  
    27         }else{  
    28             $this->error("验证码错误");  
    29         }  
    30     }  
    31 }  
    • 写html

    接下来要去新建一个表单,用于显示验证码并提供一个输入框,输入验证。

    如果表单先不新建,现在就去看验证码的效果也是可以的。在浏览器访问:

    http://localhost:8088/TP/Home/Index/verif就可以了。

    上面操作是在Controller文件夹里面的index控制器进行的。我们去同级文件夹View里面新建一个文件夹叫做index进入index新建login.html

    html文件的命名与控制器文件中的login方法一直,在方法调用

     $this->display();//调用对应模板中的login.html  
    

      即可显示login.html

    文件中添加如下表单。

      <form action="__URL__/login_do" method="post">
          <input type="text" placeholder="请输入验证码" name="code" required>
          <img src="{:U('verify')}" alt="" onclick="this.src='{:U('verify')}?'+Math.random()" title="看不清换一张">
          <button>登陆</button>
        </form>
    

      

    • 访问测试

    访问http://localhost:8088/TP/Home/Index/login即可看到如下效果。

    这个验证码是默认的,以上编写显示过程也是相对比较简单的。

     

    • 验证码图形自定义

    我们接下来可以在此基础之上自定义一下。

    修改控制器文件:

     1     /*验证码*/
     2     public function verify(){
     3         $config=array(
     4             'expire'=>  60,  //验证码的有效期(秒)
     5             'useImgBg'=>false  ,    //是否使用背景图片 默认为false
     6             'fontSize'=>35  ,    //验证码字体大小(像素) 默认为25
     7             'useCurve'=>true  ,    //是否使用混淆曲线 默认为true
     8             'useNoise'=>true  ,    //是否添加杂点 默认为true
     9             //'imageW'=>100  ,    //验证码宽度 设置为0为自动计算
    10             //'imageH'=>30  ,    //验证码高度 设置为0为自动计算
    11             'length'=>4  ,    //验证码位数
    12             //'fontttf'=>  ,    //指定验证码字体 默认为随机获取
    13             //'useZh'=>  ,    //是否使用中文验证码
    14             //'bg'=>  ,    //验证码背景颜色 rgb数组设置,例如 array(243, 251, 254)
    15             //'seKey'=>  ,    //验证码的加密密钥
    16             //'codeSet'=>  ,    //验证码字符集合 3.2.1 新增
    17             //'zhSet'=>  ,    //验证码字符集合(中文) 3.2.1 新增
    18         );
    19 
    20         $verify=new Verify($config);//新建一个验证码
    21         $verify->entry();//输出验证码
    22     }

    这样则可以自定义验证码。

  • 相关阅读:
    MVC1
    Linux中的软连接与硬连接
    python之multiprocessing(二):multiprocessing.Pool
    python之multiprocessing(一)
    python之paramiko(一)
    python_Exception之:TypeError: 'int' object is not iterable
    python之socket(一)
    python之pymysql(一)
    生成树协议--STP
    路由协议--RIP
  • 原文地址:https://www.cnblogs.com/simuhunluo/p/7607826.html
Copyright © 2020-2023  润新知