支持中文、字母、数字的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桌面中心(一) 创建数据库
Mar 11 PHP
对squid中refresh_pattern的一些理解和建议
Apr 17 PHP
php 文件夹删除、php清除缓存程序
Aug 25 PHP
基于pear auth实现登录验证
Feb 26 PHP
zf框架的Filter过滤器使用示例
Mar 13 PHP
浅谈php函数serialize()与unserialize()的使用方法
Aug 19 PHP
php的ZipArchive类用法实例
Oct 20 PHP
分享一段PHP制作的中文拼音首字母工具类
Dec 11 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
Dec 21 PHP
php实现的XML操作(读取)封装类完整实例
Feb 23 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
Dec 12 PHP
php redis setnx分布式锁简单原理解析
Oct 23 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
apache rewrite_module模块使用教程
2008/01/10 PHP
php中实现记住密码自动登录的代码
2011/03/02 PHP
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
jquery获得下拉框值的代码
2011/08/13 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
js输入框邮箱自动提示功能代码实现
2013/12/10 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
Vue学习笔记进阶篇之函数化组件解析
2017/07/21 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
2019/02/19 jQuery
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
2019/02/21 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
angularjs模态框的使用代码实例
2019/12/20 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
vue使用better-scroll实现滑动以及左右联动
2020/06/30 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
详解C++编程中一元运算符的重载
2016/01/19 Python
python实现实时监控文件的方法
2016/08/26 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
2018/09/17 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
python 错误处理 assert详解
2020/04/20 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
python 利用toapi库自动生成api
2020/10/19 Python
Python函数调用追踪实现代码
2020/11/27 Python
美国糖果店:Sugarfina
2019/02/21 全球购物
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题