博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php验证码
阅读量:5017 次
发布时间:2019-06-12

本文共 3039 字,大约阅读时间需要 10 分钟。

1.文件结构

  CreateCaptcha.php  //生成验证码类
  index.html       //验证码前端页面
  create.php      //生成验证码  
  verify.php        //验证程序

2.CreateCaptcha.php

imgWidth=100:$this->imgWidth=$imgWid; (empty($imgHei))?$this->imgHeight=30:$this->imgHeight=$imgHei; (empty($len))?$this->length=4:$this->length=$len; (empty($fontSize))?$this->fontSize=10:$this->fontSize=$fontSize; (empty($backdrop))?$this->backDrop=$backDrop:$this->backDrop=true; } /** *@param int $imgWid; *@param int $imgHei; *@param int $len; *@param int $fontSize; *@param bool $backDrop; *@return png; */ public function sendCaptcha() { // echo $this->backDrop;exit; // 开启session session_start(); //1.创建黑色画布 $image = imagecreatetruecolor($this->imgWidth, $this->imgHeight); //2.为画布定义(背景)颜色 $bgcolor = imagecolorallocate($image, 255, 255, 255); //3.填充颜色 imagefill($image, 0, 0, $bgcolor); // 4.设置验证码内容 //4.1 定义验证码的内容 $content = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; //4.1 创建一个变量存储产生的验证码数据,便于用户提交核对 $captcha = ""; for ($i = 0; $i < $this->length; $i++) { // 字体大小 $fontsize = $this->fontSize; // 字体颜色 $fontcolor = imagecolorallocate($image, mt_rand(0, 200), mt_rand(0, 200), mt_rand(0, 200)); // 设置字体内容 $fontcontent = substr($content, mt_rand(0, strlen($content)), 1); $captcha .= $fontcontent; // 显示的坐标,居中 $x = ($i * $this->imgWidth / $this->length) + mt_rand(5, 8); $y = ($this->imgHeight-$this->fontSize*2)/2; // 填充内容到画布中 imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor); } $_SESSION["captcha"] = $captcha; //是否加干扰 if ($this->backDrop) { //4.3 设置背景干扰元素 for ($$i = 0; $i < 200; $i++) { $pointcolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200)); imagesetpixel($image, mt_rand(1, $this->imgWidth-1), mt_rand(1, $this->imgHeight-1), $pointcolor); } //4.4 设置干扰线 for ($i = 0; $i < $this->length; $i++) { $linecolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200)); imageline($image, mt_rand(1, $this->imgWidth-1), mt_rand(1, $this->imgHeight-1), mt_rand(1, $this->imgWidth-1), mt_rand(1, $this->imgHeight-1), $linecolor); } } //5.向浏览器输出图片头信息 header('content-type:image/png'); //6.输出图片到浏览器 imagepng($image); //7.销毁图片 imagedestroy($image); }}?>

3.index.html

    
验证码前端页面

4.create.php

sendCaptcha(); ?>

5.verify.php

 

 

 

 

 

 

 

 

  

  

 

转载于:https://www.cnblogs.com/konglingxi/p/9033301.html

你可能感兴趣的文章
【BZOJ】3142: [Hnoi2013]数列
查看>>
http初探
查看>>
elasticsearch的安装
查看>>
__next__()
查看>>
爬取:中国大学排名
查看>>
聊天室(C++客户端+Pyhton服务器)_1.框架搭设
查看>>
UpdatePanel 内控件 更新“外的”控件【转】
查看>>
mybatis中&gt;=和&lt;=的实现方式
查看>>
Python面向对象03/继承
查看>>
java序列化和反序列化
查看>>
绝对定位
查看>>
flink源码编译(windows环境)
查看>>
dpkg 删除 百度网盘 程序
查看>>
服务器nginx安装
查看>>
std::nothrow
查看>>
rest-framework 分页器
查看>>
JQuery(一)安装&选择器 样式篇
查看>>
浏览器的DNS缓存查看和清除
查看>>
浏览器跨域问题
查看>>
HTML5 input控件 placeholder属性
查看>>