代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
PHP
】
生成带有雪花背景的验证码
作者:
Dezai.CN
/ 发布于
2011/9/6
/
797
<div> <font face="新宋体"><font color="#0000cc"><?session_start</font><font color="#006600">();</font></font><font face="新宋体"><font color="#0000cc">?> </font><FORM METHOD=POST ACTION=""> <input type=text name=number maxlength=4><img src="YanZhengMa.php?act=init"> <INPUT TYPE="submit" name="sub"> </FORM> </font><font color="#0000cc" face="新宋体"><? </font><font face="新宋体"><font color="#ff9900">//检验校验码 </font><font color="#006600">if(isset(</font><font color="#0000cc">$HTTP_POST_VARS</font><font color="#006600">[</font><font color="#cc0000">"sub"</font></font><font face="新宋体"><font color="#006600">])): if(</font><font color="#0000cc">$HTTP_POST_VARS</font><font color="#006600">[</font><font color="#cc0000">"number"</font><font color="#006600">] != </font><font color="#0000cc">$HTTP_SESSION_VARS</font><font color="#006600">[</font><font color="#0000cc">login_check_number</font><font color="#006600">] || empty(</font><font color="#0000cc">$HTTP_POST_VARS</font><font color="#006600">[</font><font color="#cc0000">"number"</font></font><font face="新宋体"><font color="#006600">])){ echo </font><font color="#cc0000">"校验码不正确!" </font></font><font face="新宋体"><font color="#006600">; }else{ echo</font><font color="#cc0000">"验证码通过!"</font></font><font face="新宋体"><font color="#006600">; } endif; </font><font color="#0000cc">show_source</font><font color="#006600">(</font><font color="#cc0000">'test.php'</font></font><font color="#006600" face="新宋体">); </font><font face="新宋体"><font color="#ff9900">//以上本页的源码 //以下是生成验证码的源码 </font><font color="#0000cc">show_source</font><font color="#006600">(</font><font color="#cc0000">'YanZhengMa.php'</font></font><font color="#006600" face="新宋体">); </font><font color="#0000cc" face="新宋体">?> </font><font color="#000000"><font color="#0000cc" face="新宋体"><?php session_start</font><font face="新宋体"><font color="#006600">(); </font><font color="#0000cc">session_register</font><font color="#006600">(</font><font color="#cc0000">"login_check_number"</font></font><font color="#006600" face="新宋体">); </font><font face="新宋体"><font color="#ff9900">//昨晚看到了chianren上的验证码效果,就考虑了一下,用PHP的GD库完成了类似功能 //先成生背景,再把生成的验证码放上去 </font><font color="#0000cc">$img_height</font><font color="#006600">=</font><font color="#0000cc">120</font><font color="#006600">; </font></font><font face="新宋体"><font color="#ff9900">//先定义图片的长、宽 </font><font color="#0000cc">$img_width</font><font color="#006600">=</font><font color="#0000cc">40</font></font><font face="新宋体"><font color="#006600">; if(</font><font color="#0000cc">$HTTP_GET_VARS</font><font color="#006600">[</font><font color="#cc0000">"act"</font><font color="#006600">]== </font><font color="#cc0000">"init"</font></font><font color="#006600" face="新宋体">){ </font><font face="新宋体"><font color="#ff9900">//srand(microtime() * 100000);//PHP420后,srand不是必须的 </font><font color="#006600">for(</font><font color="#0000cc">$Tmpa</font><font color="#006600">=</font><font color="#0000cc">0</font><font color="#006600">;</font><font color="#0000cc">$Tmpa</font><font color="#006600"><</font><font color="#0000cc">4</font><font color="#006600">;</font><font color="#0000cc">$Tmpa</font></font><font face="新宋体"><font color="#006600">++){ </font><font color="#0000cc">$nmsg</font><font color="#006600">.=</font><font color="#0000cc">dechex</font><font color="#006600">(</font><font color="#0000cc">rand</font><font color="#006600">(</font><font color="#0000cc">0</font><font color="#006600">,</font><font color="#0000cc">15</font></font><font color="#006600" face="新宋体">)); }</font><font face="新宋体"><font color="#ff9900">//by sports98 </font><font color="#0000cc">$HTTP_SESSION_VARS</font><font color="#006600">[</font><font color="#0000cc">login_check_number</font><font color="#006600">] = </font><font color="#0000cc">$nmsg</font></font><font color="#006600" face="新宋体">; </font><font face="新宋体"><font color="#ff9900">//$HTTP_SESSION_VARS[login_check_number] = strval(mt_rand("1111","9999")); //生成4位的随机数,放入session中 //谁能做下补充,可以同时生成字母和数字啊??----由sports98完成了 </font><font color="#0000cc">$aimg </font><font color="#006600">= </font><font color="#0000cc">imageCreate</font><font color="#006600">(</font><font color="#0000cc">$img_height</font><font color="#006600">,</font><font color="#0000cc">$img_width</font><font color="#006600">); </font></font><font face="新宋体"><font color="#ff9900">//生成图片 </font><font color="#0000cc">ImageColorAllocate</font><font color="#006600">(</font><font color="#0000cc">$aimg</font><font color="#006600">, </font><font color="#0000cc">255</font><font color="#006600">,</font><font color="#0000cc">255</font><font color="#006600">,</font><font color="#0000cc">255</font><font color="#006600">); </font></font><font face="新宋体"><font color="#ff9900">//图片底色,ImageColorAllocate第1次定义颜色PHP就认为是底色了 </font><font color="#0000cc">$black </font><font color="#006600">= </font><font color="#0000cc">ImageColorAllocate</font><font color="#006600">(</font><font color="#0000cc">$aimg</font><font color="#006600">, </font><font color="#0000cc">0</font><font color="#006600">,</font><font color="#0000cc">0</font><font color="#006600">,</font><font color="#0000cc">0</font><font color="#006600">); </font></font><font face="新宋体"><font color="#ff9900">//定义需要的黑色 </font><font color="#0000cc">ImageRectangle</font><font color="#006600">(</font><font color="#0000cc">$aimg</font><font color="#006600">,</font><font color="#0000cc">0</font><font color="#006600">,</font><font color="#0000cc">0</font><font color="#006600">,</font><font color="#0000cc">$img_height</font><font color="#006600">-</font><font color="#0000cc">1</font><font color="#006600">,</font><font color="#0000cc">$img_width</font><font color="#006600">-</font><font color="#0000cc">1</font><font color="#006600">,</font><font color="#0000cc">$black</font><font color="#006600">);</font></font><font face="新宋体"><font color="#ff9900">//先成一黑色的矩形把图片包围 //下面该生成雪花背景了,其实就是在图片上生成一些符号 </font><font color="#006600">for (</font><font color="#0000cc">$i</font><font color="#006600">=</font><font color="#0000cc">1</font><font color="#006600">; </font><font color="#0000cc">$i</font><font color="#006600"><=</font><font color="#0000cc">100</font><font color="#006600">; </font><font color="#0000cc">$i</font><font color="#006600">++) { </font></font><font face="新宋体"><font color="#ff9900">//先用100个做测试 </font><font color="#0000cc">imageString</font><font color="#006600">(</font><font color="#0000cc">$aimg</font><font color="#006600">,</font><font color="#0000cc">1</font><font color="#006600">,</font><font color="#0000cc">mt_rand</font><font color="#006600">(</font><font color="#0000cc">1</font><font color="#006600">,</font><font color="#0000cc">$img_height</font><font color="#006600">),</font><font color="#0000cc">mt_rand</font><font color="#006600">(</font><font color="#0000cc">1</font><font color="#006600">,</font><font color="#0000cc">$img_width</font><font color="#006600">),</font><font color="#cc0000">"*"</font><font color="#006600">,</font><font color="#0000cc">imageColorAllocate</font><font color="#006600">(</font><font color="#0000cc">$aimg</font><font color="#006600">,</font><font color="#0000cc">mt_rand</font><font color="#006600">(</font><font color="#0000cc">200</font><font color="#006600">,</font><font color="#0000cc">255</font><font color="#006600">),</font><font color="#0000cc">mt_rand</font><font color="#006600">(</font><font color="#0000cc">200</font><font color="#006600">,</font><font color="#0000cc">255</font><font color="#006600">),</font><font color="#0000cc">mt_rand</font><font color="#006600">(</font><font color="#0000cc">200</font><font color="#006600">,</font><font color="#0000cc">255</font></font><font color="#006600" face="新宋体">))); </font><font color="#ff9900" face="新宋体">//哈,看到了吧,其实也不是雪花,就是生成*号而已。为了使它们看起来"杂乱无章、5颜6色",就得在1个1个生成它们的时候,让它们的位置、颜色,甚至大小都用随机数,rand()或mt_rand都可以完成。 </font><font color="#006600" face="新宋体">} </font><font face="新宋体"><font color="#ff9900">//上面生成了背景,现在就该把已经生成的随机数放上来了。道理和上面差不多,随机数1个1个地放,同时让他们的位置、大小、颜色都用成随机数~~ //为了区别于背景,这里的颜色不超过200,上面的不小于200 </font><font color="#006600">for (</font><font color="#0000cc">$i</font><font color="#006600">=</font><font color="#0000cc">0</font><font color="#006600">;</font><font color="#0000cc">$i</font><font color="#006600"><</font><font color="#0000cc">strlen</font><font color="#006600">(</font><font color="#0000cc">$HTTP_SESSION_VARS</font><font color="#006600">[</font><font color="#0000cc">login_check_number</font><font color="#006600">]);</font><font color="#0000cc">$i</font></font><font face="新宋体"><font color="#006600">++){ </font><font color="#0000cc">imageString</font><font color="#006600">(</font><font color="#0000cc">$aimg</font><font color="#006600">, </font><font color="#0000cc">mt_rand</font><font color="#006600">(</font><font color="#0000cc">3</font><font color="#006600">,</font><font color="#0000cc">5</font><font color="#006600">),</font><font color="#0000cc">$i</font><font color="#006600">*</font><font color="#0000cc">$img_height</font><font color="#006600">/</font><font color="#0000cc">4</font><font color="#006600">+</font><font color="#0000cc">mt_rand</font><font color="#006600">(</font><font color="#0000cc">1</font><font color="#006600">,</font><font color="#0000cc">10</font><font color="#006600">),</font><font color="#0000cc">mt_rand</font><font color="#006600">(</font><font color="#0000cc">1</font><font color="#006600">,</font><font color="#0000cc">$img_width</font><font color="#006600">/</font><font color="#0000cc">2</font><font color="#006600">), </font><font color="#0000cc">$HTTP_SESSION_VARS</font><font color="#006600">[</font><font color="#0000cc">login_check_number</font><font color="#006600">][</font><font color="#0000cc">$i</font><font color="#006600">],</font><font color="#0000cc">imageColorAllocate</font><font color="#006600">(</font><font color="#0000cc">$aimg</font><font color="#006600">,</font><font color="#0000cc">mt_rand</font><font color="#006600">(</font><font color="#0000cc">0</font><font color="#006600">,</font><font color="#0000cc">100</font><font color="#006600">),</font><font color="#0000cc">mt_rand</font><font color="#006600">(</font><font color="#0000cc">0</font><font color="#006600">,</font><font color="#0000cc">150</font><font color="#006600">),</font><font color="#0000cc">mt_rand</font><font color="#006600">(</font><font color="#0000cc">0</font><font color="#006600">,</font><font color="#0000cc">200</font></font><font face="新宋体"><font color="#006600">))); } </font><font color="#0000cc">Header</font><font color="#006600">(</font><font color="#cc0000">"Content-type: image/png"</font><font color="#006600">); </font></font><font face="新宋体"><font color="#ff9900">//告诉浏览器,下面的数据是图片,而不要按文字显示 </font><font color="#0000cc">ImagePng</font><font color="#006600">(</font><font color="#0000cc">$aimg</font><font color="#006600">); </font></font><font face="新宋体"><font color="#ff9900">//生成png格式。。。嘿嘿效果蛮像回事的嘛。。。 </font><font color="#0000cc">ImageDestroy</font><font color="#006600">(</font><font color="#0000cc">$aimg</font></font><font face="新宋体"><font color="#006600">); } </font><font color="#0000cc">?></font> </font></font> </div>
试试其它关键字
证码
同语言下
.
用net匹配并替换iOS标准的emoji表情符号
.
处理带Emoji表情的的字符串
.
获取微信昵称时 过滤特殊字符
.
通过判断上传文件的头字符来判断文件的类型
.
模拟百度URL加密解密算法
.
以太坊检查地址是否合法
.
实现crontab解析类
.
获取每个月的开始和结束时间
.
图片上传工具类
.
APP手机应用信息采集
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3