支持中文、字母、数字的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 google或baidu分页代码
Nov 26 PHP
PHP 开发环境配置(Zend Server安装)
Apr 28 PHP
paypal即时到账php实现代码
Nov 28 PHP
php安全配置 如何配置使其更安全
Dec 16 PHP
php中判断文件空目录是否有读写权限的函数代码
Aug 07 PHP
使用array mutisort 实现按某字段对数据排序
Jun 18 PHP
浅析PKI加密解密 OpenSSL
Jul 01 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
Jun 12 PHP
ThinkPHP中的三大自动简介
Aug 22 PHP
总结PHP中DateTime的常用方法
Aug 11 PHP
Laravel实现定时任务的示例代码
Aug 10 PHP
PHP编译configure时常见错误的总结
Aug 17 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替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
解析PHP缓存函数的使用说明
2013/05/10 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
解决在laravel中auth建立时候遇到的问题
2019/10/15 PHP
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
js有关元素内容操作小结
2011/12/20 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
用nodejs实现json和jsonp服务的方法
2017/08/25 NodeJs
微信小程序 数据绑定及运算的简单实例
2017/09/20 Javascript
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
浅谈Vue响应式(数组变异方法)
2018/05/07 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
使用pandas read_table读取csv文件的方法
2018/07/04 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
基于Pytorch SSD模型分析
2020/02/18 Python
Python logging模块进行封装实现原理解析
2020/08/07 Python
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
机电工程专业应届生求职信
2013/10/03 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
党员岗位承诺书
2014/03/25 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
会议通知
2015/04/15 职场文书
python3实现Dijkstra算法最短路径的实现
2021/05/12 Python