支持中文、字母、数字的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学习之php4与php5之间会穿梭一点点感悟
May 03 PHP
php使用Smarty的相关注意事项及访问变量的几种方式
Dec 08 PHP
php中怎么搜索相关联数组键值及获取之
Oct 17 PHP
php定时执行任务设置详解
Feb 06 PHP
PHP开发框架laravel安装与配置教程
Mar 13 PHP
PHP实现C#山寨ArrayList的方法
Jul 16 PHP
php使用Imagick生成图片的方法
Jul 31 PHP
PHP安装threads多线程扩展基础教程
Nov 17 PHP
thinkphp中字符截取函数msubstr()用法分析
Jan 09 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
Aug 11 PHP
PHP有序表查找之插值查找算法示例
Feb 10 PHP
php实现推荐功能的简单实例
Sep 29 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判断电脑访问、手机访问的例子
2014/05/10 PHP
PHP 年月日的三级联动实例代码
2017/05/24 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
2018/05/12 PHP
数组方法解决JS字符串连接性能问题有争议
2011/01/12 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
JQuery获取表格数据示例代码
2014/05/26 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
js中跨域方法原理详解
2015/07/19 Javascript
JavaScript程序开发之JS代码放置的位置
2016/01/15 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
JQuery 获取Dom元素的实例讲解
2017/07/08 jQuery
解决ionic和angular上拉加载的问题
2017/08/03 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
Python的MongoDB模块PyMongo操作方法集锦
2016/01/05 Python
python3+requests接口自动化session操作方法
2018/10/13 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
PHP面试题-$message和$$message的区别
2015/12/08 面试题
网络安全方面的面试题
2016/01/07 面试题
既然说Ruby中一切都是对象,那么Ruby中类也是对象吗
2013/01/26 面试题
营销总经理的岗位职责
2013/12/15 职场文书
离婚协议书范本2014
2014/10/27 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
2015年幼师工作总结
2015/04/28 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
Java8中接口的新特性使用指南
2021/11/01 Java/Android
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA