PHP生成带有雪花背景的验证码


Posted in PHP onOctober 09, 2006

效果参考(附源码)http://mail.htjs.net/yanzhengma/test.php

<?session_start();?>
<FORM METHOD=POST ACTION="">
<input type=text name=number maxlength=4><img src="YanZhengMa.php?act=init">
<INPUT TYPE="submit" name="sub">
</FORM>
<?
//检验校验码
if(isset($HTTP_POST_VARS["sub"
])):
if(
$HTTP_POST_VARS["number"] != $HTTP_SESSION_VARS[login_check_number] || empty($HTTP_POST_VARS["number"
])){
    echo 
"校验码不正确!" 
;
}else{
    echo
"验证码通过!"
;
}
endif;
show_source('test.php'
);
//以上本页的源码

//以下是生成验证码的源码
show_source('YanZhengMa.php');
?>
<?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($aimg255,255,255);            
//图片底色,ImageColorAllocate第1次定义颜色PHP就认为是底色了
    
$black ImageColorAllocate($aimg0,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($aimgmt_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 相关文章推荐
PHP5.2下chunk_split()函数整数溢出漏洞 分析
Jun 06 PHP
PHP 采集心得技巧
May 15 PHP
PHP学习笔记之二 php入门知识
Jan 12 PHP
常用的PHP数据库操作方法(MYSQL版)
Jun 08 PHP
php的urlencode()URL编码函数浅析
Aug 09 PHP
用php来改写404错误页让你的页面更友好
Jan 24 PHP
php中使用redis队列操作实例代码
Feb 07 PHP
php类自动加载器实现方法
Jul 28 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
Laravel5.1 框架表单验证操作实例详解
Jan 07 PHP
PHP设计模式入门之状态模式原理与实现方法分析
Apr 26 PHP
详解PHP服务器如何在有限的资源里最大提升并发能力
May 25 PHP
一个可查询所有表的“通用”查询分页类
Oct 09 #PHP
Get或Post提交值的非法数据处理
Oct 09 #PHP
用Socket发送电子邮件
Oct 09 #PHP
编写自己的php扩展函数
Oct 09 #PHP
PHP输出控制功能在简繁体转换中的应用
Oct 09 #PHP
PHP 中执行系统外部命令
Oct 09 #PHP
PHP实现文件安全下载
Oct 09 #PHP
You might like
PHP的explode和implode的使用说明
2011/07/17 PHP
php实例分享之二维数组排序
2014/05/15 PHP
PHP实现单例模式最安全的做法
2014/06/13 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
2020/09/17 PHP
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
node.js中的fs.renameSync方法使用说明
2014/12/16 Javascript
jQuery学习笔记之基础中的基础
2015/01/19 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
JavaScript原生对象之Date对象的属性和方法详解
2015/03/13 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
js实现无缝滚动特效
2015/12/20 Javascript
微信小程序 SocketIO 实例讲解
2016/10/13 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
js动态引入的四种方法
2018/05/05 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
[57:47]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
在python3环境下的Django中使用MySQL数据库的实例
2017/08/29 Python
pandas 层次化索引的实现方法
2019/07/06 Python
Python数据类型之列表和元组的方法实例详解
2019/07/08 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
python生成任意频率正弦波方式
2020/02/25 Python
appium+python adb常用命令分享
2020/03/06 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
西安当代医院管理研究院笔试题
2015/12/11 面试题
介绍一下write命令
2012/09/24 面试题
学生出入校管理制度
2014/01/16 职场文书
计算机应用应届生求职信
2014/07/12 职场文书
高二化学教学反思
2016/02/22 职场文书
golang特有程序结构入门教程
2021/06/02 Python
mysql如何能有效防止删库跑路
2021/10/05 MySQL