温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在php中使用ci框架实现一个验证码功能

发布时间:2021-04-13 16:15:22 阅读:201 作者:Leah 栏目:开发技术
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

怎么在php中使用ci框架实现一个验证码功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

php代码:

<?php 
class Captcha_code
{
 var $width='60';
 var $num='4';
 var $height='20';
 var $name='randcode';
 public function __construct($conf="")
 {
  if($conf!="")
  {
   foreach($conf as $key=>$value)
   {
    $this->$key=$value;
   }
  }
 }
 function show()
 {
  Header("Content-type: image/gif");
  /*
  * 初始化
  */
  $border 0//是否要边框 1要:0不要
  $how $this->num; //验证码位数
  $w $this->width; //图片宽度
  $h $this->height; //图片高度
  $fontsize 5//字体大小
  $alpha "abcdefghijkmnopqrstuvwxyz"//验证码内容1:字母
  $number "023456789"//验证码内容2:数字
  $randcode ""//验证码字符串初始化
  srand((double)microtime()*1000000); //初始化随机数种子
  $im ImageCreate($w$h); //创建验证图片
  /*
  * 绘制基本框架
  */
  $bgcolor ImageColorAllocate($im255255255); //设置背景颜色
  ImageFill($im00$bgcolor); //填充背景色
  if($border)
  {
   $black ImageColorAllocate($im000); //设置边框颜色
   ImageRectangle($im00$w-1$h-1$black);//绘制边框
  }
  /*
  * 逐位产生随机字符
  */
  for($i=0$i<$how$i++)
  {   
   $alpha_or_number mt_rand(01); //字母还是数字
   $str $alpha_or_number $alpha $number;
   $which mt_rand(0strlen($str)-1); //取哪个字符
   $code substr($str$which1); //取字符
   $j = !$i 4 : $j+15//绘字符位置
   $color3 ImageColorAllocate($immt_rand(0,100), mt_rand(0,100), mt_rand(0,100)); //字符随即颜色
   ImageChar($im$fontsize$j3$code$color3); //绘字符
   $randcode .= $code//逐位加入验证码字符串
  }
  /*
  * 添加干扰
  */
  for($i=0$i<5$i++)//绘背景干扰线
  {   
   $color1 ImageColorAllocate($immt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰线颜色
   ImageArc($immt_rand(-5,$w), mt_rand(-5,$h), mt_rand(20,300), mt_rand(20,200), 5544$color1); //干扰线
  }   
  for($i=0$i<$how*15$i++)//绘背景干扰点
  {   
   $color2 ImageColorAllocate($immt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰点颜色 
   ImageSetPixel($immt_rand(0,$w), mt_rand(0,$h), $color2); //干扰点
  }
  //把验证码字符串写入session
  //$this->session->set_userdata(array($this->name=>$randcode));
  $_SESSION[$this->name]=$randcode;
  /*绘图结束*/
  Imagegif($im);
  ImageDestroy($im);
  /*绘图结束*/
 }
}
?>


调用php代码:

function verify_image({
        $conf['name'] = 'verify_code'//作为配置参数
        $this->load->library('lib_captcha'$conf);
        $this->lib_captcha->show();
        $yzm_session $this->session->userdata('verify_code');
        echo $yzm_session;
    }


html代码:

<dl>
          <dt>验证码:</dt>
          <dd>
            <input type="text" name="verify_text" id="verify_text" class="yzma" value="">
            <img src="/user/verify_image" alt="验证码" id="verify_code" class="yz_img" />
            <a href="javascript:changeCode();" class="change_yz">换一张</a>
          </dd>
          <dd class="tips_wrong"><b>验证码不正确</b></dd>
          <dd class="tips_correct"></dd>
        </dl>


js代码:

<script type="text/javascript">
    function changeCode(){
         FS.query("#verify_code").src ="/user/verify_image?r=" + Math.random();
    }
</script>

关于怎么在php中使用ci框架实现一个验证码功能问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×