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 相关文章推荐
php中通过curl smtp发送邮件
Jun 05 PHP
php和javascript之间变量的传递实现代码
Dec 19 PHP
PHP递归算法的详细示例分析
Feb 19 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
Jul 28 PHP
php使用类继承解决代码重复的问题
Feb 11 PHP
PHP使用内置dir类实现目录遍历删除
Mar 31 PHP
thinkphp autoload 命名空间自定义 namespace
Jul 17 PHP
PHP实现HTML页面静态化的方法
Nov 04 PHP
PHP.vs.JAVA
Apr 29 PHP
PHP实现登录验证码校验功能
May 17 PHP
PHP多进程简单实例小结
Nov 09 PHP
PHP实现提取多维数组指定一列的方法总结
Dec 04 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
神族 Protoss 剧情介绍
2020/03/14 星际争霸
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
JS 面向对象的5钟写法
2009/07/31 Javascript
JavaScript 的继承
2011/10/01 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
学习JavaScript设计模式之装饰者模式
2016/01/19 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
Javascript 动态改变imput type属性
2016/11/01 Javascript
详解Vuex中mapState的具体用法
2017/09/28 Javascript
jquery.param()实现数组或对象的序列化方法
2018/10/08 jQuery
通过实例了解js函数中参数的传递
2019/06/15 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
[01:19:23]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第二场
2018/04/06 DOTA
Python的Django框架中自定义模版标签的示例
2015/07/20 Python
python实现识别相似图片小结
2016/02/22 Python
Python时间的精准正则匹配方法分析
2017/08/17 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
python多任务及返回值的处理方法
2019/01/22 Python
python安装gdal的两种方法
2019/10/29 Python
numpy.array 操作使用简单总结
2019/11/08 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
南威尔士家居商店:Leekes
2016/10/25 全球购物
西北政法大学自主招生自荐信
2014/01/29 职场文书
志愿者服务感言
2014/02/27 职场文书
2014年教师工作总结
2014/11/10 职场文书
运动会闭幕词
2015/01/28 职场文书
趵突泉导游词
2015/02/03 职场文书
公司催款律师函
2015/05/27 职场文书
小学班主任培训心得体会
2016/01/07 职场文书
Apache POI的基本使用详解
2021/11/07 Servers
SpringDataJPA在Entity中常用的注解介绍
2021/12/06 Java/Android
【海涛教你打DOTA】死灵飞龙第一视角解说
2022/04/01 DOTA
JS前端轻量fabric.js系列物体基类
2022/08/05 Javascript