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 相关文章推荐
优化NFR之一 --MSSQL Hello Buffer Overflow
Oct 09 PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
php 字符串替换的方法
Jan 10 PHP
php 带逗号千位符数字的处理方法
Jan 10 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
Oct 24 PHP
PHP按行读取、处理较大CSV文件的代码实例
Apr 09 PHP
php中出现空白页的原因及解决方法汇总
Jul 08 PHP
php上传大文件设置方法
Apr 14 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
ThinkPHP中where()使用方法详解
2016/04/19 PHP
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
php桥接模式应用案例分析
2019/10/23 PHP
如何用javascript判断录入的日期是否合法
2007/01/08 Javascript
Javascript UrlDecode函数代码
2010/01/09 Javascript
Javascript常考语句107条收集
2010/03/09 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
移动Web中图片自适应的两种JavaScript解决方法
2015/06/18 Javascript
js实现继承的5种方式
2015/12/01 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
在 Node.js 中使用原生 ES 模块方法解析
2017/09/19 Javascript
探讨Vue.js的组件和模板
2017/10/27 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
详解在Python程序中使用Cookie的教程
2015/04/30 Python
快速了解Python中的装饰器
2018/01/11 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
django配置连接数据库及原生sql语句的使用方法
2019/03/03 Python
ipython和python区别详解
2019/06/26 Python
利用python清除移动硬盘中的临时文件
2020/10/28 Python
英国安全产品购物网站:The Safe Shop
2017/03/20 全球购物
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
母亲七十大寿答谢词
2014/01/18 职场文书
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
民事和解协议书格式
2014/11/29 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
周末问候语大全
2015/11/10 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书