支持中文、字母、数字的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 相关文章推荐
实用函数9
Nov 08 PHP
php下检测字符串是否是utf8编码的代码
Jun 28 PHP
PHP 字符串分割和比较
Oct 06 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
Jul 28 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
Sep 30 PHP
如何用php获取程序执行的时间
Jun 09 PHP
微信公众号开发之微信公共平台消息回复类实例
Nov 14 PHP
PHP中error_log()函数的使用方法
Jan 20 PHP
smarty内置函数capture用法分析
Jan 22 PHP
PHP几个实用自定义函数小结
Jan 25 PHP
PHP中的密码加密的解决方案总结
Oct 26 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
Nov 21 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
虫族 ZERG 概述
2020/03/14 星际争霸
简单的过滤字符串中的HTML标记
2006/12/25 PHP
php引用地址改变变量值的问题
2012/03/23 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
从数据结构的角度分析 for each in 比 for in 快的多
2013/07/07 Javascript
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
python2.7安装图文教程
2018/03/13 Python
Php多进程实现代码
2018/05/07 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
2018/05/31 Python
python中的二维列表实例详解
2018/06/19 Python
在Python中如何传递任意数量的实参的示例代码
2019/03/21 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
Python numpy线性代数用法实例解析
2019/11/15 Python
Python-openCV读RGB通道图实例
2020/01/17 Python
德国化妆品和天然化妆品网上商店:kosmetikfuchs.de
2017/06/09 全球购物
经济实惠的名牌太阳镜和眼镜:Privé Revaux
2021/02/07 全球购物
包装类的功能、种类、常用方法
2012/01/27 面试题
办公室文秘自我评价
2013/09/21 职场文书
工程监理应届生求职信
2013/11/09 职场文书
函授药学自我鉴定
2014/02/07 职场文书
行政监察建议书
2014/05/19 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
学生抄袭作业的检讨书
2014/10/02 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
校长新学期致辞
2015/07/30 职场文书
2016年小学生迎国庆广播稿
2015/12/18 职场文书
2019学校运动会开幕词
2019/05/13 职场文书
基于Android10渲染Surface的创建过程
2022/08/14 Java/Android