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 相关文章推荐
支持oicq头像的留言簿(二)
Oct 09 PHP
php不用内置函数对数组排序的两个算法代码
Feb 08 PHP
PHP中使用cURL实现Get和Post请求的方法
Mar 13 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
Jul 15 PHP
php中将一段数据存到一个txt文件中并显示其内容
Aug 15 PHP
php实现文件下载代码分享
Aug 19 PHP
ThinkPHP框架设计及扩展详解
Nov 25 PHP
为你总结一些php系统类函数
Oct 21 PHP
PHP下载远程图片并保存到本地方法总结
Jan 22 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
Mar 21 PHP
详解php语言最牛掰的Laravel框架
Nov 20 PHP
PHP操作Redis常用命令的实例详解
Dec 23 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
swfupload 多文件上传实现代码
2008/08/27 PHP
解析php中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
php的4种常见运行方式
2015/03/20 PHP
PHP单例模式详细介绍
2015/07/01 PHP
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
2015/12/04 Javascript
jquery跟随屏幕滚动效果的实现代码
2016/04/13 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
JavaScript动态添加事件之事件委托
2016/07/12 Javascript
React组件生命周期详解
2017/07/03 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
浅谈在node.js进入文件目录的问题
2018/05/13 Javascript
Vue实现用户自定义字段显示数据的方法
2018/08/28 Javascript
使用mixins实现elementUI表单全局验证的解决方法
2019/04/02 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
2020/04/27 Javascript
解决基于 keep-alive 的后台多级路由缓存问题
2020/12/23 Javascript
python实现斐波那契递归函数的方法
2014/09/08 Python
全面解析Python的While循环语句的使用方法
2015/10/13 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
2017/12/14 Python
解决python爬虫中有中文的url问题
2018/05/11 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
pytorch中获取模型input/output shape实例
2019/12/30 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
Python实现弹球小游戏
2020/08/01 Python
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
软件测试工程师结构化面试题库
2016/11/23 面试题
少年闰土教学反思
2014/02/22 职场文书
教师批评与自我批评总结
2014/10/16 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
李强为自己工作观后感
2015/06/11 职场文书
会议简讯范文
2015/07/20 职场文书
导游词之清晏园
2019/11/22 职场文书
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL