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和XSL stylesheets转换XML文档
Oct 09 PHP
在 PHP 中使用随机数的三个步骤
Oct 09 PHP
一个简单的MySQL数据浏览器
Oct 09 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
Jun 06 PHP
php中长文章分页显示实现代码
Sep 29 PHP
基于PHP一些十分严重的缺陷详解
Jun 03 PHP
php使用正则过滤js脚本代码实例
May 10 PHP
[原创]php获取数组中键值最大数组项的索引值
Mar 17 PHP
php 实现进制相互转换
Apr 07 PHP
PHP常用函数总结(180多个)
Dec 25 PHP
浅谈php调用python文件
Mar 29 PHP
详解阿里云视频直播PHP-SDK接入教程
Jul 09 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面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
PHP写杨辉三角实例代码
2011/07/17 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
chrome原生方法之数组
2011/11/30 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
2014/02/26 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
基于angularJS的表单验证指令介绍
2016/10/21 Javascript
使用ES6语法重构React代码详解
2017/05/09 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
浅谈Vue.use的使用
2018/08/29 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
vue点击按钮动态创建与删除组件功能
2019/12/29 Javascript
vue3.0生命周期的示例代码
2020/09/24 Javascript
python多重继承实例
2014/10/11 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
python微信公众号之关键词自动回复
2018/06/15 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
2019/05/30 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
2020/09/26 Python
Python判断变量是否是None写法代码实例
2020/10/09 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
Python Socket多线程并发原理及实现
2020/12/11 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
纯CSS3实现圆圈动态发光特效动画的示例代码
2021/03/08 HTML / CSS
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
土木工程专业个人求职信
2013/12/30 职场文书
出国留学介绍信
2014/01/13 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
2015年行政部工作总结
2015/04/28 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书
为什么在foreach循环中JAVA集合不能添加或删除元素
2021/06/11 Java/Android
如何利用python实现列表嵌套字典取值
2022/06/10 Python