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 发送数据
Oct 09 PHP
优化PHP代码技巧的小结
Jun 02 PHP
探讨PHP调用时间格式的参数详解
Jun 06 PHP
Win下如何安装PHP的APC拓展
Aug 07 PHP
WordPress中用于检索模版的相关PHP函数使用解析
Dec 15 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
Feb 23 PHP
抛弃 PHP 代价太高
Apr 26 PHP
关于php支持的协议与封装协议总结(推荐)
Nov 17 PHP
PHP实现简易计算器功能
Aug 28 PHP
PHP+RabbitMQ实现消息队列的完整代码
Mar 20 PHP
phpstorm 配置xdebug的示例代码
Mar 31 PHP
ThinkPHP5分页paginate代码实例解析
Nov 10 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 文件上传源码分析(RFC1867)
2009/10/30 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
PHP Ajax实现无刷新附件上传
2016/08/17 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
js根据给定的日期计算当月有多少天实现思路及代码
2013/02/25 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
vue缓存的keepalive页面刷新数据的方法
2019/04/23 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
[00:31]DOTA2上海特级锦标赛 Fnatic战队宣传片
2016/03/04 DOTA
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
Python中with及contextlib的用法详解
2017/06/08 Python
手把手教你python实现SVM算法
2017/12/27 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
使用Python计算玩彩票赢钱概率
2019/06/26 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
详解python itertools功能
2020/02/07 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
Holland & Barrett爱尔兰:英国领先的健康零售商
2019/03/31 全球购物
社区学雷锋活动策划方案
2014/01/30 职场文书
致跳远运动员加油稿
2014/02/11 职场文书
违反工作纪律检讨书
2014/02/15 职场文书
计算机售后服务承诺书
2014/05/30 职场文书
教师求职简历自我评价
2015/03/10 职场文书
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS