PHP生成带有雪花背景的验证码


Posted in PHP onSeptember 28, 2008

<?php
session_start();
session_register("login_check_number");
//昨晚看到了chianren上的验证码效果,就考虑了一下,用PHP的GD库完成了类似功能
//先成生背景,再把生成的验证码放上去
$img_height=120; //先定义图片的长、宽
$img_width=40;
if($HTTP_GET_VARS["act"]== "init"){
//srand(microtime() * 100000);//PHP420后,srand不是必须的
for($Tmpa=0;$Tmpa<4;$Tmpa++){
$nmsg.=dechex(rand(0,15));
}//by sports98

$HTTP_SESSION_VARS[login_check_number] = $nmsg;
//$HTTP_SESSION_VARS[login_check_number] = strval(mt_rand("1111","9999")); //生成4位的随机数,放入session中
//谁能做下补充,可以同时生成字母和数字啊??----由sports98完成了
$aimg = imageCreate($img_height,$img_width); //生成图片
ImageColorAllocate($aimg, 255,255,255); //图片底色,ImageColorAllocate第1次定义颜色PHP就认为是底色了
$black = ImageColorAllocate($aimg, 0,0,0); //定义需要的黑色
ImageRectangle($aimg,0,0,$img_height-1,$img_width-1,$black);//先成一黑色的矩形把图片包围
//下面该生成雪花背景了,其实就是在图片上生成一些符号
for ($i=1; $i<=100; $i++) { //先用100个做测试
imageString($aimg,1,mt_rand(1,$img_height),mt_rand(1,$img_width),"*",imageColorAllocate($aimg,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)));
//哈,看到了吧,其实也不是雪花,就是生成*号而已。为了使它们看起来"杂乱无章、5颜6色",就得在1个1个生成它们的时候,让它们的位置、颜色,甚至大小都用随机数,rand()或mt_rand都可以完成。
}
//上面生成了背景,现在就该把已经生成的随机数放上来了。道理和上面差不多,随机数1个1个地放,同时让他们的位置、大小、颜色都用成随机数~~
//为了区别于背景,这里的颜色不超过200,上面的不小于200
for ($i=0;$i<strlen($HTTP_SESSION_VARS[login_check_number]);$i++){
imageString($aimg, mt_rand(3,5),$i*$img_height/4+mt_rand(1,10),mt_rand(1,$img_width/2), $HTTP_SESSION_VARS[login_check_number][$i],imageColorAllocate($aimg,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)));
}
Header("Content-type: image/png"); //告诉浏览器,下面的数据是图片,而不要按文字显示
ImagePng($aimg); //生成png格式。。。嘿嘿效果蛮像回事的嘛。。。
ImageDestroy($aimg);
}
?>

PHP 相关文章推荐
一个简单的php实现的MySQL数据浏览器
Mar 11 PHP
php 向访客和爬虫显示不同的内容
Nov 09 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
Apr 23 PHP
探讨PHP调用时间格式的参数详解
Jun 06 PHP
测试php函数的方法
Nov 13 PHP
PHP实现股票趋势图和柱形图
Feb 07 PHP
PHP实现支付宝即时到账功能
Dec 21 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
Dec 13 PHP
PHP设计模式之观察者模式定义与用法示例
Aug 04 PHP
PHPstorm启用自动换行的方法详解(IDE)
Sep 17 PHP
PHP编实现程动态图像的创建代码
Sep 28 #PHP
php 三维饼图的实现代码
Sep 28 #PHP
PHP控制网页过期时间的代码
Sep 28 #PHP
PHP集成FCK的函数代码
Sep 27 #PHP
php横向重复区域显示二法
Sep 25 #PHP
php下防止单引号,双引号在接受页面转义的设置方法
Sep 25 #PHP
PHP伪造referer实例代码
Sep 20 #PHP
You might like
PHP安装memcached扩展笔记
2015/05/28 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
2016/12/23 PHP
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
JSONP 跨域共享信息
2012/08/16 Javascript
javascript定时变换图片实例代码
2013/03/17 Javascript
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
2016/06/13 Javascript
正则验证小数点后面只能有两位数的方法
2017/02/28 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
2017/07/21 Javascript
关于vue面试题汇总
2018/03/20 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
2018/10/09 Javascript
javascript中floor使用方法总结
2019/02/02 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
javascript+Canvas实现画板功能
2020/06/23 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
[03:09]2014DOTA2国际邀请赛 赛场上的美丽风景线 中国Coser也爱DOTA2
2014/07/20 DOTA
python 编码规范整理
2018/05/05 Python
Python函数any()和all()的用法及区别介绍
2018/09/14 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
Python 忽略文件名编码的方法
2020/08/01 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
Notino芬兰:购买香水和化妆品
2019/04/15 全球购物
银行实习生的自我评价
2013/12/09 职场文书
大专生毕业的自我评价
2014/02/06 职场文书
小学毕业感言300字
2014/02/19 职场文书
同学会邀请函模板
2015/01/30 职场文书
羊脂球读书笔记
2015/06/30 职场文书
如何Python使用re模块实现okenizer
2022/04/30 Python