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
利用static实现表格的颜色隔行显示
Oct 09 PHP
加速XP搜索功能堪比vista
Mar 22 PHP
php笔记之:有规律大文件的读取与写入的分析
Apr 26 PHP
smarty获得当前url的方法分享
Feb 14 PHP
使用YUI+Ant 实现JS CSS压缩
Sep 02 PHP
twig里使用js变量的方法
Feb 05 PHP
Smarty实现页面静态化(生成HTML)的方法
May 23 PHP
深入理解PHP类的自动载入机制
Sep 16 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
Oct 14 PHP
CI框架实现框架前后端分离的方法详解
Dec 30 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
Sep 27 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的FTP学习(二)[转自奥索]
2006/10/09 PHP
PHP 和 HTML
2006/10/09 PHP
PHP 文件上传源码分析(RFC1867)
2009/10/30 PHP
PHP 强制下载文件代码
2010/10/24 PHP
PHP setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
ArrayList类(增强版)
2007/04/04 Javascript
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
Javascript中各种trim的实现详细解析
2013/12/10 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
jquery删除table当前行的实例代码
2016/10/07 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
Javascript创建类和对象详解
2017/05/31 Javascript
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
Vue项目中最新用到的一些实用小技巧
2018/11/06 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
jQuery实现评论模块
2020/08/19 jQuery
[41:17]VG vs Optic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
初学python数组的处理代码
2011/01/04 Python
python读取浮点数和读取文本文件示例
2014/05/06 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
python自动化unittest yaml使用过程解析
2020/02/03 Python
详解Python IO编程
2020/07/24 Python
ALDO英国官网:加拿大女鞋品牌
2018/02/19 全球购物
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
体育教师工作总结的自我评价
2013/10/10 职场文书
个人委托书怎么写
2014/04/04 职场文书
2015年幼师工作总结
2015/04/28 职场文书
不要在HTML中滥用div
2021/05/08 HTML / CSS