支持中文、字母、数字的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 相关文章推荐
新浪新闻小偷
Oct 09 PHP
PHP编程中八种常见的文件操作方式
Nov 19 PHP
用PHPdig打造属于你自己的Google[图文教程]
Feb 14 PHP
PHP学习 运算符与运算符优先级
Jun 15 PHP
php smarty函数扩展
Mar 15 PHP
php中mysql连接方式PDO使用详解
Feb 25 PHP
php三元运算符知识汇总
Jul 02 PHP
WordPress网站性能优化指南
Nov 18 PHP
PHP读取mssql json数据中文乱码的解决办法
Apr 11 PHP
PHP Mysqli 常用代码集合
Nov 12 PHP
PHP策略模式定义与用法示例
Jul 27 PHP
PHP Post获取不到非表单数据的问题解决办法
Feb 27 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中10个不常见却非常有用的函数
2010/03/21 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
js获取客户端外网ip的简单实例
2013/11/21 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
jQuery插件编写步骤详解
2016/06/03 Javascript
JS中的==运算: [''] == false —&gt;true
2016/07/24 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
学习vue.js计算属性
2016/12/03 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
JS实现图片预览的两种方式
2017/06/27 Javascript
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
使用canvas进行图像编辑的实例
2017/08/29 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
小程序自定义模板实现吸顶功能
2020/01/08 Javascript
python实现写数字文件名的递增保存文件方法
2018/10/25 Python
Python os.access()用法实例
2019/02/18 Python
详解python中的线程与线程池
2019/05/10 Python
python opencv摄像头的简单应用
2019/06/06 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
2020/01/13 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
购买限量版收藏品、珠宝和礼品:Bradford Exchange
2016/09/23 全球购物
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
.NET是怎么支持多种语言的
2015/02/24 面试题
车辆委托书范本
2014/10/05 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
行为规范主题班会
2015/08/13 职场文书
校园之声广播稿
2015/08/18 职场文书
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python
MySQL transaction事务安全示例讲解
2022/06/21 MySQL