支持中文、字母、数字的PHP验证码


Posted in PHP onMay 04, 2015

本文以实例演示5种验证码,并介绍生成验证码的函数。PHP生成验证码的原理:通过GD库,生成一张带验证码的图片,并将验证码保存在Session中。

支持中文、字母、数字的PHP验证码

session_start(); 
getCode(4,60,20); 
  
function getCode($num,$w,$h) { 
  $code = ""; 
  for ($i = 0; $i < $num; $i++) { 
    $code .= rand(0, 9); 
  } 
  //4位验证码也可以用rand(1000,9999)直接生成 
  //将生成的验证码写入session,备验证时用 
  $_SESSION["helloweba_num"] = $code; 
  //创建图片,定义颜色值 
  header("Content-type: image/PNG"); 
  $im = imagecreate($w, $h); 
  $black = imagecolorallocate($im, 0, 0, 0); 
  $gray = imagecolorallocate($im, 200, 200, 200); 
  $bgcolor = imagecolorallocate($im, 255, 255, 255); 
  //填充背景 
  imagefill($im, 0, 0, $gray); 
  
  //画边框 
  imagerectangle($im, 0, 0, $w-1, $h-1, $black); 
  
  //随机绘制两条虚线,起干扰作用 
  $style = array ($black,$black,$black,$black,$black, 
    $gray,$gray,$gray,$gray,$gray 
  ); 
  imagesetstyle($im, $style); 
  $y1 = rand(0, $h); 
  $y2 = rand(0, $h); 
  $y3 = rand(0, $h); 
  $y4 = rand(0, $h); 
  imageline($im, 0, $y1, $w, $y3, IMG_COLOR_STYLED); 
  imageline($im, 0, $y2, $w, $y4, IMG_COLOR_STYLED); 
  
  //在画布上随机生成大量黑点,起干扰作用; 
  for ($i = 0; $i < 80; $i++) { 
    imagesetpixel($im, rand(0, $w), rand(0, $h), $black); 
  } 
  //将数字随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成 
  $strx = rand(3, 8); 
  for ($i = 0; $i < $num; $i++) { 
    $strpos = rand(1, 6); 
    imagestring($im, 5, $strx, $strpos, substr($code, $i, 1), $black); 
    $strx += rand(8, 12); 
  } 
  imagepng($im);//输出图片 
  imagedestroy($im);//释放图片所占内存 
}

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
使用PHP和XSL stylesheets转换XML文档
Oct 09 PHP
PHP 文件上传功能实现代码
Jun 24 PHP
php中批量删除Mysql中相同前缀的数据表的代码
Jul 01 PHP
php读取mssql的ntext字段返回值为空的解决方法
Dec 30 PHP
PHP输出九九乘法表代码实例
Mar 27 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
Jul 14 PHP
thinkphp实现分页显示功能
Dec 03 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
Mar 15 PHP
使用PHP访问RabbitMQ消息队列的方法示例
Jun 06 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
Apr 09 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
Oct 08 PHP
php替换字符串中间字符为省略号的方法
May 04 #PHP
php中JSON的使用方法
Apr 30 #PHP
PHP使用CURL实现多线程抓取网页
Apr 30 #PHP
PHP遍历数组的方法汇总
Apr 30 #PHP
php实现根据IP地址获取其所在省市的方法
Apr 30 #PHP
PHP实现根据银行卡号判断银行
Apr 29 #PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 #PHP
You might like
php小偷相关截取函数备忘
2010/11/28 PHP
PHP目录函数实现创建、读取目录教程实例
2011/01/13 PHP
jQuery语法总结和注意事项小结
2012/11/11 Javascript
js 字符串转换成数字的三种方法
2013/03/23 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
一个JavaScript操作元素定位元素的实例
2014/10/29 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
jQuery简单实现彩色云标签效果示例
2016/08/01 Javascript
canvas时钟效果
2017/02/16 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
2017/02/22 Javascript
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
JS设计模式之数据访问对象模式的实例讲解
2017/09/30 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
2018/02/26 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
详解vue项目中实现图片裁剪功能
2019/06/07 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
python的常见命令注入威胁
2013/02/18 Python
Python爬取国外天气预报网站的方法
2015/07/10 Python
Python中音频处理库pydub的使用教程
2017/06/07 Python
Python数据结构之单链表详解
2017/09/12 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
Python正则表达式指南 推荐
2018/10/09 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
2018/11/29 Python
了解不常见但是实用的Python技巧
2019/05/23 Python
python 如何将office文件转换为PDF
2020/09/22 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
幼儿园园长岗位职责
2013/11/26 职场文书
学校岗位设置方案
2014/01/16 职场文书
团日活动策划书
2014/02/01 职场文书
毕业生如何写自荐信
2014/03/26 职场文书
领导干部作风建设剖析材料
2014/10/11 职场文书
水电施工员岗位职责
2015/04/11 职场文书
vue中div禁止点击事件的实现
2022/04/02 Vue.js