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
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
Sep 02 PHP
PHP 加密与解密的斗争
Apr 17 PHP
php 取得瑞年与平年的天数的代码
Aug 10 PHP
10个可以简化php开发过程的MySQL工具
Apr 11 PHP
PHP执行linux系统命令的常用函数使用说明
Apr 27 PHP
解析php中eclipse 用空格替换 tab键
Jun 24 PHP
mac下安装nginx和php
Nov 04 PHP
php计算两个坐标(经度,纬度)之间距离的方法
Apr 17 PHP
Yii中表单用法实例详解
Jan 05 PHP
PHP读取文件的常见几种方法
Nov 03 PHP
Yii 框架控制器创建使用及控制器响应操作示例
Oct 14 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中使用全局变量的几种方法
2013/06/24 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
js数字输入框(包括最大值最小值限制和四舍五入)
2009/11/24 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
2017/02/10 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
微信小程序开发之toast提示插件使用示例
2017/06/08 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
JavaScript的Object.defineProperty详解
2018/07/09 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
vue组件之间的数据传递方法详解
2019/04/19 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python self,cls,decorator的理解
2009/07/13 Python
Python for循环生成列表的实例
2018/06/15 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
Python调用飞书发送消息的示例
2020/11/10 Python
用纯css3实现的图片放大镜特效效果非常不错
2014/09/02 HTML / CSS
2014婚礼司仪主持词
2014/03/14 职场文书
一帮一活动总结
2014/05/08 职场文书
三八妇女节趣味活动方案
2014/08/23 职场文书
个人股份合作协议书
2014/10/24 职场文书
神秘岛读书笔记
2015/07/01 职场文书
初中毕业感言300字
2015/07/31 职场文书
关于开学的感想
2015/08/10 职场文书
python基于scrapy爬取京东笔记本电脑数据并进行简单处理和分析
2021/04/14 Python
Redis集群新增、删除节点以及动态增加内存的方法
2021/09/04 Redis