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 相关文章推荐
玩转图像函数库―常见图形操作
Sep 03 PHP
php flush类输出缓冲剖析
Oct 19 PHP
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
Dec 16 PHP
Zend的MVC机制使用分析(一)
May 02 PHP
php Xdebug的安装与使用详解
Jun 20 PHP
php通过数组实现多条件查询实现方法(字符串分割)
May 06 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
Jul 28 PHP
PHP GD库生成图像的几个函数总结
Nov 19 PHP
PHP中的替代语法介绍
Jan 09 PHP
关于PHP转换超过2038年日期出错的问题解决
Jun 28 PHP
TP5框架页面跳转样式操作示例
Apr 05 PHP
PHP队列场景以及实现代码实例详解
Feb 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中批量修改文件后缀名的函数代码
2011/10/23 PHP
6种php上传图片重命名的方法实例
2013/11/04 PHP
PHP生成条形图的方法
2014/12/10 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
javascript中input中readonly和disabled区别介绍
2012/10/23 Javascript
JavaScript中的style.display属性操作
2013/03/27 Javascript
Js,alert出现乱码问题的解决方法
2013/06/19 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
深入了解Node.js中的一些特性
2014/09/25 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
2017/01/11 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
微信小程序获取手机系统信息的方法【附源码下载】
2017/12/07 Javascript
React BootStrap用户体验框架快速上手
2018/03/06 Javascript
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
Python爬虫DNS解析缓存方法实例分析
2017/06/02 Python
python笔记:mysql、redis操作方法
2017/06/28 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
Django网络框架之创建虚拟开发环境操作示例
2019/06/06 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
草莓网化妆品加拿大网站:Strawberrynet Canada
2016/09/20 全球购物
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
公积金接收函格式
2015/01/30 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
读完《骆驼祥子》的观后感!
2019/07/05 职场文书
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android
在Python 中将类对象序列化为JSON
2022/04/06 Python
MySQL 数据表操作
2022/05/04 MySQL