博客
关于我
强烈建议你试试无所不能的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

你可能感兴趣的文章
typescript-基本类型
查看>>
JS地毯式学习一
查看>>
「BZOJ3697」「FJ2014集训」采药人的路径
查看>>
【原创】用事实说话,Firefox 的性能是 Chrome 的 2 倍,Edge 的 4 倍,IE11 的 6 倍!...
查看>>
分享一个移动端rem布局的适配mixin
查看>>
zoj 2587 判断最小割的唯一性
查看>>
Linux用户基础
查看>>
java 日期转时间戳,时间戳转为日期
查看>>
python——ddt + excel + HTMLTestRunner 实现接口测试
查看>>
学号20155311的实验二报告
查看>>
射频微波相关公式
查看>>
您收到一封来自“人工智能+新内容”论坛的邀约,请查收!
查看>>
JS 新语法「可选链」「双问号」已进入 Stage 3
查看>>
从零开始学黑苹果-基础安装教程(10.11.6)
查看>>
摩拜前端周刊第19期
查看>>
记一次AntDesign技术栈--React开发体验
查看>>
vue3.x版本安装vue-cli建项目
查看>>
vue项目报错
查看>>
vue项目报错:Unexpected tab character (no-tabs)
查看>>
vue-cli2.x版本安装vue-cli建项目
查看>>