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新手上路(十)
Oct 09 PHP
用ADODB来让PHP操作ACCESS数据库的方法
Dec 31 PHP
PHP 工厂模式使用方法
May 18 PHP
php网页标题中文乱码的有效解决方法
Mar 05 PHP
从PHP的源码中深入了解stdClass类
Apr 18 PHP
destoon首页调用求购供应信息的地区名称的方法
Aug 21 PHP
wamp安装后自定义配置的方法
Aug 23 PHP
php验证session无效的解决方法
Nov 04 PHP
thinkphp3.x中cookie方法的用法分析
May 19 PHP
php readfile下载大文件失败的解决方法
May 22 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
Apr 03 PHP
php下的原生ajax请求用法实例分析
Feb 28 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
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
php adodb连接mssql解决乱码问题
2009/06/12 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
清除div下面的所有标签的方法
2014/02/17 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
JavaScript实现LI列表数据绑定的方法
2015/08/04 Javascript
jquery带翻页动画的电子杂志代码分享
2015/08/21 Javascript
javascript实现添加附件功能的方法
2015/11/18 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
Angularjs 动态改变title标题(兼容ios)
2016/12/29 Javascript
Vue filters过滤器的使用方法
2017/07/14 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
详解python中sort排序使用
2019/03/23 Python
详解Python爬取并下载《电影天堂》3千多部电影
2019/04/26 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
Python 如何对文件目录操作
2020/07/10 Python
Python读写压缩文件的方法
2020/07/30 Python
html5 web本地存储将取代我们的cookie
2012/12/26 HTML / CSS
德国足球商店:OUTFITTER
2019/05/06 全球购物
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
餐饮服务员岗位职责
2015/02/09 职场文书
村官2015年度工作总结
2015/10/14 职场文书
Golang: 内建容器的用法
2021/05/05 Golang
Python中re模块的元字符使用小结
2022/04/07 Python
《勇者辞职不干了》上卷BD发售宣传CM公开
2022/04/08 日漫
VUE之图片Base64编码使用ElementUI组件上传
2022/04/09 Vue.js
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
2022/08/05 Java/Android