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之第六天
Oct 09 PHP
php session安全问题分析
Jun 24 PHP
深入PHP变量存储的详解
Jun 13 PHP
使用Discuz关键词服务器实现PHP中文分词
Mar 11 PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
Mar 25 PHP
PHP使用CURL实现多线程抓取网页
Apr 30 PHP
php实现QQ空间获取当前用户的用户名并生成图片
Jul 25 PHP
微信公众号判断用户是否已关注php代码解析
Jun 24 PHP
教你在header中隐藏php的版本信息
Aug 10 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
Sep 22 PHP
PHP实现负载均衡下的session共用功能
Apr 17 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
Aug 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
PHP 数组遍历顺序理解
2009/09/09 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
Express.JS使用详解
2014/07/17 Javascript
Node.js中使用mongoskin操作mongoDB实例
2014/09/28 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
JavaScript中Object基础内部方法图
2018/02/05 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
Vue绑定内联样式问题
2018/10/17 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
JavaScript获取当前url路径过程解析
2019/12/27 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
2020/06/07 Javascript
解决vue请求接口第一次成功,第二次失败问题
2020/09/08 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
在Pycharm中调试Django项目程序的操作方法
2019/07/17 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
Python json转字典字符方法实例解析
2020/04/13 Python
英国骑行、跑步、游泳、铁人三项运动装备专卖店:Wiggle
2016/08/23 全球购物
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
大学毕业生工作的自我评价
2013/10/01 职场文书
《小小竹排画中游》教学反思
2014/02/26 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
打架检讨书范文
2015/01/27 职场文书
教务处干事工作总结
2015/08/14 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
2021/08/30 Python
请求模块urllib之PYTHON爬虫的基本使用
2022/04/08 Python