专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > ColdFusion

Coldfusion 七 生成验证码实例(CF验证码)

发布时间:2010-06-14 17:29:27 文章来源:www.iduyao.cn 采编人员:星星草
Coldfusion 7 生成验证码实例(CF验证码)

原理:  将图片的SRC指向一个CFM文件,在CFM文件中用JAVA功能创建一个显示验证码的图片,同时记录Session变量。当用户输入验证码后与Session变量进行比较!

示例:

请输入验证码: <input type="text" name="captcha"><img src="captcha.cfm" id="captchaImage" border="0">

比较用户输入的验证码:

<cfif comparenocase(session.code,form.captcha) neq 0>
<!---验证码不对--->
</cfif>

captcha.cfm内容如下:

<cffunction name="loadSystemFont"   access="private" output="false" returntype="any">
<cfargument name="fontName" required="no" type="string" default="Georgia" />
<cfargument name="size" required="no" type="numeric" default="18" />
<cfargument name="style" required="no" type="string" default="italic" />
<cfset var font = createObject("Java","java.awt.Font") />
<cfreturn font.decode("#arguments.fontName#-#ucase(arguments.style)#-#arguments.size#") />
</cffunction>
<!-- ******************产生随机数字和字母******************** -->
<cffunction name="getRandomCode" access="private" returntype="string" output="false">
<cfargument name="length" type="numeric" required="no" default="4"/>
<cfset var charList = "A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|0|1|2|3|4|5|6|7|8|9" />
<cfset var randomCode=""/>
<cfloop from="1" to="#arguments.Length#" index="i">
<cfset thisNum = RandRange(1,listlen(charList, "|")) />
<cfset thisChar = ListGetAt(charList, thisNum, "|") />
<cfset randomCode = ListAppend(randomCode, thisChar, " ") />
</cfloop>
<cfset randomCode = replace(randomCode, " ", "", "all") />
<cfreturn randomCode />
</cffunction>
<!-- ***********************创建图形******************************* -->
<cffunction name="createImage" access="private" returntype="any" output="false">
<cfargument name="width" type="numeric" required="no" default="70" />
<cfargument name="height" type="numeric" required="no" default="25" />
<!-- 创建JAVA类 -->
<cfset var image = createObject("java","java.awt.image.BufferedImage") />
<cfset var color=createObject("java","java.awt.Color") />
<!-- 定义字体样式 -->
<cfset fontStyle=loadSystemFont() />
<!-- 在内存中创建图象 -->
<cfset image.init(javaCast("int",arguments.width),javaCast("int",arguments.height),image.TYPE_INT_RGB) />
<!-- 获取图形 -->
<cfset g = image.getGraphics() />
<!-- 设定背景色 -->
<cfset g.setColor(color.gray) />
<cfset g.fillRect(0,0,javaCast("int",arguments.width),javaCast("int",arguments.height)) />
<!-- 获取随机产生的认证码 -->
<cfset code=getRandomCode() />
<!-- 将认证码写入SESSION用于比较 -->
<cfset session.code=code />
<!-- 将认证码显示到图象中 -->
<cfset g.setColor(color.black) />
<cfset g.setFont(fontStyle) />
<cfset g.drawString(code,javaCast("int",12),javaCast("int",18)) />
<!-- 使图象生效 -->
<cfset g.dispose() />
<cfreturn image />
</cffunction>

<cfscript>
//定义图像存放路径
path=getDirectoryFromPath(expandPath("*.*"));
outputStream = createObject("java","java.io.FileOutputStream");
imageIO = createObject("java","javax.imageio.ImageIO");
outputStream.init("#path#code.png");
// 输出图象到本地
imageIO.write(createImage(),"png",outputStream);
</cfscript>
<!-- 设置页面不被缓存 -->
<cfheader name="Pragma" value="no-cache" />
<cfheader name="Cache-Control" value="no-cache" />
<cfheader name="Expires" value="0" />
<cfcontent type="image/x-png" file="#path#code.png" />

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • 3D MAX导出MD2,delphi开发,该如何处理

    3D MAX导出MD2,delphi开发 我用dilphi开发3D游戏,想用3D MAX导出MD2建立关键针动画,然后用dilphi调用关键针,可是现在出现2个问...

  • coldfusion如何整合框架

    coldfusion怎么整合框架? 如题coldfusion怎么整合框架? 有没有例子 谁给讲解下,谢谢! ------解决方案-------------------- 其实,在...

  • coldfusion的正则表达式中文支持如何样

    coldfusion的正则表达式中文支持怎么样? coldfusion的正则表达式中文支持怎么样?有没有问题?我用的的是coldfusion 9 因为要用的一...

  • 求教解决办法

    求教 请问,哪里有GLscene的中文教程,视频也可.谢谢 ------解决方案-------------------- http://technology.jfcms.net/cx/Delp...

  • Provider '80020005',该怎么解决

    Provider '80020005' Provider '80020005' 类型不匹配。 \admin\add_products.asp, line 167 <!--#include file="../i...

  • 小弟我们打开一个网页的原理是什么

    我们打开一个网页的原理是什么? 我觉得是服务器端传输一个文档过来,然后由ie(或者其它的)编译,呈现我们面前的就是我们打开的网页了 -...

  • 小弟我想循环输出一个 cfgrid

    我想循环输出一个 cfgrid rt ------解决方案-------------------- cfgrid有个query属性的。 ------解决方案-----------------...

  • coldfusion解决方案

    coldfusion cf中上传可以控制大小吗?如何控制? ------解决方案-------------------- 上传前可以先得到文件大小,之后再决定是否要上...

  • C# 发送一个网页邮件 如何做

    C# 发送一个网页邮件 怎么做 我用System.Net.Mail;做的,可是它的属性就那么几个。怎么办? ------解决方案-------------------- M...

  • coldfusion 9 连接Access出错?该怎么处理

    coldfusion 9 连接Access出错??? 各位大侠帮忙看看,为何我用coldfusion 9 连接Access时,显示OK,连接Access unicode时却出现以下错误信...

热门推荐: