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 相关文章推荐
[FAQ]PHP中的一些常识:类篇
Oct 09 PHP
php初学者写及时补给skype用户充话费的小程序
Nov 02 PHP
PHP性能优化工具篇Benchmark类调试执行时间
Dec 06 PHP
PHP数组 为文章加关键字连接 文章内容自动加链接
Dec 29 PHP
基于php-fpm 参数的深入理解
Jun 03 PHP
解析smarty 截取字符串函数 truncate的用法介绍
Jun 20 PHP
php输入流php://input使用浅析
Sep 02 PHP
PHP模块memcached使用指南
Dec 08 PHP
php单链表实现代码分享
Jul 04 PHP
基于php编程规范(详解)
Aug 17 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
Oct 13 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 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生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
php实现MySQL数据库备份与还原类实例
2014/12/09 PHP
初学JavaScript第二章
2008/09/30 Javascript
关于js类的定义
2011/06/28 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
JavaScript判断textarea值是否为空并给出相应提示
2014/09/04 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
微信小程序 video组件详解
2016/10/25 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
2018/10/12 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
JavaScript实现选项卡效果的分析及步骤
2019/04/16 Javascript
js+canvas绘制图形验证码
2020/09/21 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
[05:20]卡尔工作室_DOTA2新手教学_DOTA2超强新手功能
2013/04/22 DOTA
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
python 七种邮件内容发送方法实例
2014/04/22 Python
简单介绍Python的Django框架加载模版的方式
2015/07/20 Python
Python 的内置字符串方法小结
2016/03/15 Python
Python绘制正余弦函数图像的方法
2018/08/28 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
2019/05/04 Python
python 实现return返回多个值
2019/11/19 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
巧用HTML5给按钮背景设计不同的动画简单实例
2016/08/09 HTML / CSS
计算机专业优秀大学生自我总结
2014/01/21 职场文书
学校创先争优活动总结
2014/08/28 职场文书
争先创优演讲稿
2014/09/15 职场文书
班主任培训研修日志
2015/11/13 职场文书
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python
Spring boot应用启动后首次访问很慢的解决方案
2021/06/23 Java/Android
python如何为list实现find方法
2022/05/30 Python