PHP生成带有雪花背景的验证码


Posted in PHP onSeptember 28, 2008

<?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($aimg, 255,255,255); //图片底色,ImageColorAllocate第1次定义颜色PHP就认为是底色了
$black = ImageColorAllocate($aimg, 0,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($aimg, mt_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模板技术[转]
Jan 04 PHP
PHP 面向对象实现代码
Nov 11 PHP
phpMyadmin 用户权限中英对照
Apr 02 PHP
php后台多用户权限组思路与实现程序代码分享
Feb 13 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
Sep 28 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
php如何解决无法上传大于8M的文件问题
Mar 10 PHP
destoon利用Rewrite规则设置网站安全
Jun 21 PHP
php代码检查代理ip的有效性
Aug 19 PHP
php利用header函数下载各种文件
Aug 24 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 PHP
PHP面向对象程序设计重载(overloading)操作详解
Jun 13 PHP
PHP编实现程动态图像的创建代码
Sep 28 #PHP
php 三维饼图的实现代码
Sep 28 #PHP
PHP控制网页过期时间的代码
Sep 28 #PHP
PHP集成FCK的函数代码
Sep 27 #PHP
php横向重复区域显示二法
Sep 25 #PHP
php下防止单引号,双引号在接受页面转义的设置方法
Sep 25 #PHP
PHP伪造referer实例代码
Sep 20 #PHP
You might like
PHP技术开发技巧分享
2010/03/23 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
jquery下div 的resize事件示例代码
2014/03/09 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
js操作css属性实现div层展开关闭效果的方法
2015/05/11 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
2016/08/30 Javascript
javascript设置文本框光标的方法实例小结
2016/11/04 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
微信小程序-获得用户输入内容
2017/02/13 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
微信小程序冒泡事件及其阻止方法实例分析
2018/12/06 Javascript
[01:52]PWL S2开团时刻第四期——DOTA2成语故事
2020/12/03 DOTA
Python中使用dom模块生成XML文件示例
2015/04/05 Python
python文件操作相关知识点总结整理
2016/02/22 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
python使用smtplib模块发送邮件
2020/12/17 Python
阿联酋网上花店:Ferns N Petals
2018/02/14 全球购物
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
体育专业个人的求职信范文
2013/09/21 职场文书
大学毕业生通用求职信
2013/09/28 职场文书
优秀员工自荐书范文
2013/12/08 职场文书
舞蹈毕业生的自我评价
2014/03/05 职场文书
宿舍标语大全
2014/06/19 职场文书
担保书格式范文
2015/09/22 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis
html网页引入svg图片的4种方式
2022/08/05 HTML / CSS