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 str_replace的替换漏洞
Mar 15 PHP
PHP学习笔记之三 数据库基本操作
Jan 17 PHP
php替换超长文本中的特殊字符的函数代码
May 22 PHP
基于PHP Socket配置以及实例的详细介绍
Jun 13 PHP
php文件夹与文件目录操作函数介绍
Sep 09 PHP
PHP统计二维数组元素个数的方法
Nov 12 PHP
PHP源码分析之变量的存储过程分解
Jul 03 PHP
php中动态变量用法实例
Jun 10 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
Mar 22 PHP
PHP中Restful api 错误提示返回值实现思路
Apr 12 PHP
PHP+Ajax实现的博客文章添加类别功能示例
Mar 29 PHP
php获取小程序码的实现代码(B类接口)
Jun 13 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调用Oracle存储过程的方法
2008/09/12 PHP
PHP 代码规范小结
2012/03/08 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
PHP中使用break跳出多重循环代码实例
2015/01/21 PHP
php生成4位数字验证码的实现代码
2015/11/23 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
JS实现状态栏跑马灯文字效果代码
2015/10/24 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
BootStrap的双日历时间控件使用
2017/07/25 Javascript
vue单页应用在页面刷新时保留状态数据的方法
2018/09/21 Javascript
es6基础学习之解构赋值
2018/12/10 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
Vue自定义表单内容检查rules实例
2020/10/30 Javascript
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
Scrapy-redis爬虫分布式爬取的分析和实现
2017/02/07 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
Python日志模块logging基本用法分析
2018/08/23 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
机电专业毕业生求职信
2013/10/27 职场文书
校园广播稿500字
2014/02/04 职场文书
知名企业招聘广告词大全
2014/03/18 职场文书
办公室主任岗位承诺书
2014/05/29 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
Go 语言中 20 个占位符的整理
2021/10/16 Golang