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 相关文章推荐
一个简易需要注册的留言版程序
Oct 09 PHP
Ajax+PHP边学边练 之五 图片处理
Dec 03 PHP
浅析PHP绘图技术
Jul 03 PHP
php中的boolean(布尔)类型详解
Oct 28 PHP
php基于socket实现SMTP发送邮件的方法
Mar 05 PHP
php中ob_flush函数和flush函数用法分析
Mar 18 PHP
PHP递归获取目录内所有文件的实现方法
Nov 01 PHP
php生成网页桌面快捷方式
May 05 PHP
django中的ajax组件教程详解
Oct 18 PHP
PHP使用ajax的post方式下载excel文件简单示例
Aug 06 PHP
PHP7 标准库修改
Mar 09 PHP
如何用PHP实现多线程编程
May 26 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开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
用js实现小球的自由移动代码
2013/04/22 Javascript
原生js做的手风琴效果的导航菜单
2013/11/08 Javascript
js的参数有长度限制吗?发现不能超过2083个字符
2014/04/20 Javascript
Javascript遍历table中的元素示例代码
2014/07/08 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
老生常谈JavaScript 正则表达式语法
2016/08/20 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
python网页请求urllib2模块简单封装代码
2014/02/07 Python
Python Queue模块详细介绍及实例
2016/12/27 Python
Python通过调用mysql存储过程实现更新数据功能示例
2018/04/03 Python
自学python的建议和周期预算
2019/01/30 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
Python 绘制酷炫的三维图步骤详解
2019/07/12 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
2019/08/05 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
使用Python实现音频双通道分离
2020/12/25 Python
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
新学期开学寄语
2014/01/18 职场文书
前处理班长职位说明书
2014/03/01 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
拾金不昧感谢信
2015/01/21 职场文书
全陪导游词开场白
2015/05/29 职场文书
安全教育日主题班会
2015/08/13 职场文书
爱国主义教育主题班会
2015/08/13 职场文书