支持中文、字母、数字的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 相关文章推荐
第一节--面向对象编程
Nov 16 PHP
PHP动态变静态原理
Nov 25 PHP
php动态实现表格跨行跨列实现代码
Nov 06 PHP
smarty模板局部缓存方法使用示例
Jun 17 PHP
Yii入门教程之Yii安装及hello world
Nov 25 PHP
PHP实现无限级分类(不使用递归)
Oct 22 PHP
PHP简单实现DES加密解密的方法
Jul 12 PHP
PHP获取访问页面HTTP状态码的实现代码
Nov 03 PHP
浅谈php fopen下载远程文件的函数
Nov 18 PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
Aug 15 PHP
Laravel用户授权系统的使用方法示例
Sep 16 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
基于mysql的bbs设计(五)
2006/10/09 PHP
php设计模式 Factory(工厂模式)
2011/06/26 PHP
php匹配字符中链接地址的方法
2014/12/22 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
php curl发送请求实例方法
2019/08/01 PHP
php根据地址获取百度地图经纬度的实例方法
2019/09/03 PHP
prototype Element学习笔记(篇一)
2008/10/26 Javascript
斜45度寻路实现函数
2009/08/20 Javascript
获得所有表单值的JQuery实现代码[IE暂不支持]
2012/05/24 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
NodeJS学习笔记之Connect中间件模块(二)
2015/01/27 NodeJs
JavaScript中用于生成随机数的Math.random()方法
2015/06/15 Javascript
JavaScript数据类型转换的注意事项
2016/07/31 Javascript
node.js操作mysql简单实例
2017/05/25 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
2017/07/15 Javascript
vue基于mint-ui的城市选择3级联动的示例
2017/10/25 Javascript
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
Vue 实现树形视图数据功能
2018/05/07 Javascript
js数组去重的N种方法(小结)
2018/06/07 Javascript
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
vue新建项目并配置标准路由过程解析
2019/12/09 Javascript
javascript实现画板功能
2020/04/12 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
Python的pycurl包用法简介
2015/11/13 Python
利用python将json数据转换为csv格式的方法
2018/03/22 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
python中把元组转换为namedtuple方法
2020/12/09 Python
CSS3制作苹果风格键盘特效
2015/02/26 HTML / CSS
英国天然有机美容护肤品:Neal’s Yard Remedies
2018/05/05 全球购物
高中生学习的自我评价
2013/12/14 职场文书
健康家庭事迹材料
2014/05/02 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
论群众路线学习笔记
2014/11/06 职场文书