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 strtr() 函数使用说明
Nov 21 PHP
PHP+MySQL 手工注入语句大全 推荐
Oct 30 PHP
php jquery 实现新闻标签分类与无刷新分页
Dec 18 PHP
PHP 根据IP地址控制访问的代码
Apr 22 PHP
使用PHPMyAdmin修复论坛数据库的图文方法
Jan 09 PHP
ThinkPHP分页类使用详解
Mar 05 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
May 28 PHP
php判断GIF图片是否为动画的方法
Sep 04 PHP
PHP连接SQLServer2005的方法
Jan 27 PHP
php获取本周星期一具体日期的方法
Apr 20 PHP
PHP实现微信网页授权开发教程
Jan 19 PHP
ThinkPHP下表单令牌错误与解决方法分析
May 20 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
详解WordPress中分类函数wp_list_categories的使用
2016/01/04 PHP
PHP文件类型检查及fileinfo模块安装使用详解
2019/05/09 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
2013/11/30 Javascript
jquery操作 iframe的方法
2014/12/03 Javascript
JavaScript 开发工具webstrom使用指南
2014/12/09 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
JavaScript获取服务器端时间的方法
2016/11/29 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
2017/02/19 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
2017/09/18 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
2018/09/30 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
jQuery实现的点击显示隐藏下拉菜单功能完整示例
2019/05/17 jQuery
js制作提示框插件
2020/12/24 Javascript
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
2017/08/15 HTML / CSS
吉尔德利巧克力公司:Ghirardelli Chocolate Company
2019/03/27 全球购物
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
日本亚马逊官方网站:Amazon.co.jp
2020/04/14 全球购物
what is the difference between ext2 and ext3
2013/11/03 面试题
会计毕业生求职简历的自我评价
2013/10/20 职场文书
大四自我鉴定
2014/02/08 职场文书
献爱心标语
2014/06/21 职场文书
先进个人推荐材料
2014/12/29 职场文书
自我评价优缺点范文
2015/03/11 职场文书
2015年保险公司工作总结
2015/04/24 职场文书
PHP获取学生成绩的方法
2021/11/17 PHP
解决vue-router的beforeRouteUpdate不能触发
2022/04/14 Vue.js