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中的注释、变量、数组、常量、函数应用介绍
Nov 16 PHP
php笔记之:php函数range() round()和list()的使用说明
Apr 26 PHP
深入PHP nl2br()格式化输出的详解
Jun 05 PHP
PHP自动生成后台导航网址的最佳方法
Aug 27 PHP
ThinkPHP使用smarty模板引擎的方法
Jul 01 PHP
php将access数据库转换到mysql数据库的方法
Dec 24 PHP
检测codeigniter脚本消耗内存情况的方法
Mar 21 PHP
php简单实现批量上传图片的方法
May 09 PHP
PHP简单实现模拟登陆功能示例
Sep 15 PHP
Laravel学习教程之View模块详解
Sep 18 PHP
php快速导入大量数据的实例方法
Sep 23 PHP
Laravel 6.2 中添加了可调用容器对象的方法
Oct 22 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如何调用webservice应用介绍
2012/11/24 PHP
PHP过滤黑名单关键字的方法
2014/12/01 PHP
PHP中static关键字以及与self关键字的区别
2015/07/01 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
2015/07/06 PHP
php 利用array_slice函数获取随机数组或前几条数据
2015/09/30 PHP
laravel 解决强制跳转 https的问题
2019/10/22 PHP
javascript测试题练习代码
2012/10/10 Javascript
js自定义方法通过隐藏iframe实现文件下载
2013/02/21 Javascript
Javascript实现页面跳转的几种方式分享
2013/10/26 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
vue.js的手脚架vue-cli项目搭建的步骤
2017/08/30 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
JS数据类型STRING使用实例解析
2019/12/18 Javascript
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
jquery实现图片放大镜效果
2020/12/23 jQuery
Python入门教程之运算符与控制流
2016/08/17 Python
基于Python __dict__与dir()的区别详解
2017/10/30 Python
解读! Python在人工智能中的作用
2017/11/14 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
对Python Pexpect 模块的使用说明详解
2019/02/14 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
python实现猜拳小游戏
2020/04/05 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
Python requests上传文件实现步骤
2020/09/15 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
《颐和园》教学反思
2014/02/26 职场文书
保护环境建议书100字
2014/05/13 职场文书
高中教师考核方案
2014/05/18 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
自我推荐信格式模板
2015/03/24 职场文书
法律意见书范本
2015/06/04 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技