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编程语言开发动态WAP页面
Oct 09 PHP
javascript,php获取函数参数对象的代码
Feb 03 PHP
如何用php获取程序执行的时间
Jun 09 PHP
解析Extjs与php数据交互(增删查改)
Jun 25 PHP
PHP Session 变量的使用方法详解与实例代码
Sep 11 PHP
PHP计算加权平均数的方法
Jul 16 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
Sep 30 PHP
thinkphp微信开发(消息加密解密)
Dec 02 PHP
PHP中的Trait 特性及作用
Apr 03 PHP
初识PHP中的Swoole
Apr 05 PHP
实现laravel 插入操作日志到数据库的方法
Oct 11 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
Oct 15 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 错误处理经验分享
2011/10/11 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
js 弹出菜单/窗口效果
2011/10/30 Javascript
php对mongodb的扩展(初识如故)
2012/11/11 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
javascript的解析执行顺序在各个浏览器中的不同
2014/03/17 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
浅谈关于JavaScript API设计的一些建议和准则
2015/06/24 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
Node.js中看JavaScript的引用
2017/04/22 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
Vue项目添加动态浏览器头部title的方法
2018/07/11 Javascript
vue实现数字动态翻牌的效果(开箱即用)
2019/12/08 Javascript
JS常用排序方法实例代码解析
2020/03/03 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
Vue实现图片轮播组件思路及实例解析
2020/05/11 Javascript
VSCode 配置uni-app的方法
2020/07/11 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
python中import学习备忘笔记
2017/01/24 Python
Python可迭代对象操作示例
2019/05/07 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
Python中的self用法详解
2019/08/06 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
在python3中实现更新界面
2020/02/21 Python
浅谈html5 video 移动端填坑记
2018/01/15 HTML / CSS
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
外包公司软件测试工程师
2014/11/01 面试题
护士的岗位职责
2013/12/04 职场文书
《草原》教学反思
2014/02/15 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
2016年教师寒假学习心得体会
2015/10/09 职场文书
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python