Thinkphp验证码的实现 标签扩展

本文介绍如何在ThinkPHP中通过标签库实现验证码功能,适用于多个场景的复用。包括自定义控制器方法生成验证码图片,以及在模板中使用标签调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用Thinkphp实现验证码很简单,但如果一个项目有很多地方要用到它呢,这时通过标签拓展来实现验证码就成了首选。
下面小编通过一个栗子,来让大家学会如何去实现~
虽然小编用的是thinkphp3.2.1版本展示的,不过不用担心,其他版本的thinkphp目录结构稍有变化,只要读懂这个栗子,举一反三类推即可。

1、首先在Application/Home/Controller中创建  PublicController.class.php
代码如下:
 //通过code方法来显示验证码,引入ORG.Util.Image类库和ORG.Util.String类库。
 <?php
     class PublicController extends Controller {
        public function code(){
           $w=isset($_GET['w'])?$_GET['w']:30;
           $h=isset($_GET['h'])?$_GET['h']:30;
           import('ORG.Util.Image');
           Image::buildImageVerify(2,1,'png',$w,$h,'code');      //Image类的buildImageVerify方法用于生成验证码
        }
    }
  ?>
2、其次 在ThinkPHP\Library\Think\Template\TagLib 创建TagLibMessage.class.php
代码如下:
<?php
   Class TagLibMessage extends TagLib{     //必须继承于TagLib
        protected $tags   =  array(
              // 定义code 标签
             'code'=>array('attr'=>'width,height','close'=>0),  //attr:标签支持的属性列表,用逗号隔开
        );
       //每个标签的解析方法在定义的时候需要添加“_”前缀,可以传入两个参数,属性字符串和内容字符串(针对非闭合标签)。必须通过return 返回标签的字符串解析输出
       public function _code($attr)   {
              $tag     =  $this->parseXmlAttr($attr,'code');//表示分析input标签的标签定义,并返回input的所有标签属性
              $width   =  $tag['width'];
              $height  =  $tag['height'];
              $str = "<img src='__APP__/Public/code?w={$width}&h={$height}' οnclick='this.src=this.src+\"?\"+Math.random()'/>";
              return $str;
         }
    }
?>
3、最后是html部分:
(1)在涉及到验证码的Html页面,将
<taglib name='Message' />    //Message 与TagLibMessage保持一致
这段代码插入到该页面html代码的第一行(必须在第一行)
(2)之后在适当位置加入以下html代码即可     
  验证码:<input type='text' name='code'/>
          <Message:code  width='30' height='30'/>       //Message下的code标签
  <br/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值