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中的实现trim函数代码
Mar 19 PHP
解析php curl_setopt 函数的相关应用及介绍
Jun 17 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
Dec 10 PHP
php+html5实现无刷新图片上传教程
Jan 22 PHP
php连接oracle数据库的方法(测试成功)
May 26 PHP
py文件转exe时包含paramiko模块出错解决方法
Aug 12 PHP
php闭包中使用use声明变量的作用域实例分析
Aug 09 PHP
Laravel框架文件上传功能实现方法示例
Apr 16 PHP
php链式操作的实现方式分析
Aug 12 PHP
浅谈laravel 5.6 安装 windows上使用composer的安装过程
Oct 18 PHP
Yii使用DbTarget实现日志功能的示例代码
Jul 21 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 数组遍历顺序理解
2009/09/09 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
2014/07/04 PHP
浅析iis7.5安装配置php环境
2015/05/10 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
2018/05/12 PHP
JavaScript 面向对象的之私有成员和公开成员
2010/05/04 Javascript
window.addEventListener来解决让一个js事件执行多个函数
2012/12/26 Javascript
JS中判断null、undefined与NaN的方法
2014/03/26 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
Nodejs抓取html页面内容(推荐)
2016/08/11 NodeJs
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
nuxt 实现在其它js文件中使用store的方式
2020/11/05 Javascript
[54:25]Ti4 循环赛第三日LGD vs MOUZ
2014/07/12 DOTA
Python解释执行原理分析
2014/08/22 Python
进一步探究Python中的正则表达式
2015/04/28 Python
Python中类型检查的详细介绍
2017/02/13 Python
Python 逐行分割大txt文件的方法
2017/10/10 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
Python3处理HTTP请求的实例
2018/05/10 Python
Python实现全排列的打印
2018/08/18 Python
python实现大转盘抽奖效果
2019/01/22 Python
python 自动批量打开网页的示例
2019/02/21 Python
python移位运算的实现
2019/07/15 Python
python字典通过值反查键的实现(简洁写法)
2020/09/30 Python
党员的自我评价范文
2014/01/02 职场文书
致200米运动员广播稿
2014/02/06 职场文书
员工规章制度范本
2015/08/07 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
CSS使用伪类控制边框长度的方法
2022/01/18 HTML / CSS
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers