php生成图片验证码的方法


Posted in PHP onApril 15, 2016

本文为大家分享了php生成图片验证码的方法,供大家参考,具体内容如下

首先从指定字符集合中随机抽取固定数目的字符,以一种不规则的方法画在画布上,再适当添加一些干扰点和干扰元素,最后将图片输出,一张崭新的验证码就完成了。

前端代码如下:

<!DOCTYPE html>
<html>
<head>
 <meta http-equiv="content-type" content="text/html;charset=utf-8">
 <title>This is a test!</title>
 <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
</head>
<body>
 <form name="form">
  <input type="text" placeholder="账号"/><br/>
  <input type="password" placeholder="密码"/><br/>
  <input type="text" placeholder="验证码"/>
  <img id="verImg" src="libs/verification.php"/>
  <a href="#" class="change" onclick="changeVer()">点击刷新</a><br/>
  <input type="submit" value="登录"/>
 </form>
 <script type="text/javascript">
 //刷新验证码
 function changeVer(){
  document.getElementById("verImg").src="libs/verification.php?tmp="+Math.random();
 }
 </script>
</body>
</html>

php脚本文件验证码的代码如下:

<?php
 
session_start();
//开启session记录验证码数据
 
vCode(4, 15);//设置验证码的字符个数和图片基础宽度
 
//vCode 字符数目,字体大小,图片宽度、高度
function vCode($num = 4, $size = 20, $width = 0, $height = 0) {
 
 !$width && $width = $num * $size * 4 / 5 + 15;
 !$height && $height = $size + 10;
 
 //设置验证码字符集合
 $str = "23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW";
 //保存获取的验证码
 $code = '';
 
 //随机选取字符
 for ($i = 0; $i < $num; $i++) {
  $code .= $str[mt_rand(0, strlen($str)-1)];
 }
 
 //创建验证码画布
 $im = imagecreatetruecolor($width, $height);
 
 //背景色
 $back_color = imagecolorallocate($im, mt_rand(0,100),mt_rand(0,100), mt_rand(0,100));
 
 //文本色
 $text_color = imagecolorallocate($im, mt_rand(100, 255), mt_rand(100, 255), mt_rand(100, 255));
 
 imagefilledrectangle($im, 0, 0, $width, $height, $back_color);
 
 
  // 画干扰线
 for($i = 0;$i < 5;$i++) {
  $font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  imagearc($im, mt_rand(- $width, $width), mt_rand(- $height, $height), mt_rand(30, $width * 2), mt_rand(20, $height * 2), mt_rand(0, 360), mt_rand(0, 360), $font_color);
 }
 
  // 画干扰点
 for($i = 0;$i < 50;$i++) {
  $font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
  imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $font_color);
 }
 
 //随机旋转角度数组
 $array=array(5,4,3,2,1,0,-1,-2,-3,-4,-5);
 
  // 输出验证码
 // imagefttext(image, size, angle, x, y, color, fontfile, text)
 @imagefttext($im, $size , array_rand($array), 12, $size + 6, $text_color, 'c:\WINDOWS\Fonts\simsun.ttc', $code);
 $_SESSION["VerifyCode"]=$code;
 //no-cache在每次请求时都会访问服务器
 //max-age在请求1s后再次请求会再次访问服务器,must-revalidate则第一发送请求会访问服务器,之后不会再访问服务器
 // header("Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate");
 header("Cache-Control: no-cache");
 header("Content-type: image/png;charset=gb2312");
 //将图片转化为png格式
 imagepng($im);
 imagedestroy($im);
}
?>

效果图:

php生成图片验证码的方法

以上就是本文的全部内容,希望对大家学习php程序设计有所帮助,大家学会编写php图片验证码

PHP 相关文章推荐
用PHP实现图象锐化代码
Jun 14 PHP
PHP 中文处理技巧
Apr 25 PHP
php各种编码集详解和以及在什么情况下进行使用
Sep 11 PHP
php处理文件的小例子(解压缩,删除目录)
Feb 03 PHP
php inc文件使用的风险和注意事项
Nov 12 PHP
php对象和数组相互转换的方法
May 12 PHP
PHP直接修改表内容DataGrid功能实现代码
Sep 24 PHP
PHP实现的随机IP函数【国内IP段】
Jul 20 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
Sep 09 PHP
注意!PHP 7中不要做的10件事
Sep 18 PHP
PHP 将dataurl转成图片image方法总结
Oct 14 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
Apr 14 #PHP
php上传大文件设置方法
Apr 14 #PHP
什么是OneThink oneThink后台添加插件步骤
Apr 13 #PHP
java模拟PHP的pack和unpack类
Apr 13 #PHP
php远程下载类分享
Apr 13 #PHP
Thinkphp和onethink实现微信支付插件
Apr 13 #PHP
PHP MSSQL 分页实例
Apr 13 #PHP
You might like
php 信息采集程序代码
2009/03/17 PHP
php学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
header导出Excel应用示例
2014/01/24 PHP
PHP实现对站点内容外部链接的过滤方法
2014/09/10 PHP
PHP正则验证Email的方法
2015/06/15 PHP
php求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
jquery无缝向上滚动实现代码
2013/03/29 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
2015/03/01 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
javascript this详细介绍
2016/09/19 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
2020/11/24 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
vue中element 的upload组件发送请求给后端操作
2020/09/07 Javascript
[38:30]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场2
2014/05/24 DOTA
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
python贪吃蛇游戏代码
2020/04/18 Python
对python中各个response的使用说明
2020/03/28 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
餐厅考勤管理制度
2014/01/28 职场文书
党员组织关系介绍信
2014/02/13 职场文书
党的群众路线学习材料
2014/05/16 职场文书
大学生创业计划书
2014/08/14 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
幼儿园教师的自我评价范文
2014/09/17 职场文书
承诺书范本
2015/01/21 职场文书
大明湖导游词
2015/02/03 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
2015年工商所工作总结
2015/05/21 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python