Coldfusion 7 產生驗證碼執行個體(CF驗證碼)

來源:互聯網
上載者:User
文章目錄
  • 原理:  將圖片的SRC指向一個CFM檔案,在CFM檔案中用JAVA功能建立一個顯示驗證碼的圖片,同時記錄Session變數。當使用者輸入驗證碼後與Session變數進行比較!
  • 樣本:
  • 比較使用者輸入的驗證碼:
  • captcha.cfm內容如下:
原理:  將圖片的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" />

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.