温馨提示×

温馨提示×

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

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

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

发布时间:2021-04-13 16:15:22 来源:亿速云 阅读:181 作者:Leah 栏目:开发技术

怎么在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($im, 255, 255, 255); //设置背景颜色
  ImageFill($im, 0, 0, $bgcolor); //填充背景色
  if($border)
  {
   $black = ImageColorAllocate($im, 0, 0, 0); //设置边框颜色
   ImageRectangle($im, 0, 0, $w-1, $h-1, $black);//绘制边框
  }
  /*
  * 逐位产生随机字符
  */
  for($i=0; $i<$how; $i++)
  {   
   $alpha_or_number = mt_rand(0, 1); //字母还是数字
   $str = $alpha_or_number ? $alpha : $number;
   $which = mt_rand(0, strlen($str)-1); //取哪个字符
   $code = substr($str, $which, 1); //取字符
   $j = !$i ? 4 : $j+15; //绘字符位置
   $color3 = ImageColorAllocate($im, mt_rand(0,100), mt_rand(0,100), mt_rand(0,100)); //字符随即颜色
   ImageChar($im, $fontsize, $j, 3, $code, $color3); //绘字符
   $randcode .= $code; //逐位加入验证码字符串
  }
  /*
  * 添加干扰
  */
  for($i=0; $i<5; $i++)//绘背景干扰线
  {   
   $color1 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰线颜色
   ImageArc($im, mt_rand(-5,$w), mt_rand(-5,$h), mt_rand(20,300), mt_rand(20,200), 55, 44, $color1); //干扰线
  }   
  for($i=0; $i<$how*15; $i++)//绘背景干扰点
  {   
   $color2 = ImageColorAllocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //干扰点颜色 
   ImageSetPixel($im, mt_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框架实现一个验证码功能问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

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

AI