支持中文、字母、数字的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 xfocus防注入资料
Apr 27 PHP
PHP中的session永不过期的解决思路及实现方法分享
Apr 20 PHP
超级实用的7个PHP代码片段分享
Jan 05 PHP
php输出1000以内质数(素数)示例
Feb 16 PHP
PHP 导出Excel示例分享
Aug 18 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
Aug 20 PHP
php获取Google机器人访问足迹的方法
Apr 15 PHP
解读PHP中上传文件的处理问题
May 29 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
May 05 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
Oct 23 PHP
PHP有序表查找之插值查找算法示例
Feb 10 PHP
PHP反射原理与用法深入分析
Sep 28 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
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
php使用json-schema模块实现json校验示例
2019/09/28 PHP
JavaScript中的变量声明早于赋值分析
2012/03/01 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
js简单抽奖代码
2015/01/16 Javascript
每天一篇javascript学习小结(Date对象)
2015/11/13 Javascript
js性能优化技巧
2015/11/29 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
JS实现加载和读取XML文件的方法详解
2017/04/24 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
js实现开关灯效果
2020/03/30 Javascript
python常规方法实现数组的全排列
2015/03/17 Python
Python基础知识_浅谈用户交互
2017/05/31 Python
简单谈谈Python中的json与pickle
2017/07/19 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
python numpy实现rolling滚动案例
2020/06/08 Python
pycharm导入源码的具体步骤
2020/08/04 Python
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
HomeAway澳大利亚:预订你的度假屋,公寓、度假村、别墅等
2019/02/20 全球购物
初三家长会邀请函
2014/01/18 职场文书
青年文明号复核材料
2014/02/11 职场文书
2014年基层党组织公开承诺书
2014/03/29 职场文书
爱护公共设施演讲稿
2014/09/13 职场文书
党员对照检查材料
2014/09/22 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
新学期开学寄语2016
2015/12/04 职场文书
2016年社会管理综治宣传月活动总结
2016/03/16 职场文书
股权投资协议书
2016/03/23 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
pycharm部署django项目到云服务器的详细流程
2021/06/29 Python
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript