Ian 懶惰蟲筆記
2008年3月13日 星期四
ColdFusion + Image MagicK 製作圖片驗證碼
在很多網站加入會員或登入會員時,都會要求依圖片顯示輸入驗證碼的動作,以防止被機器人惡意攻擊。
以下提供一個 ColdFusion 利用 Image MagicK 製作圖片驗證的範例。
authimg.cfm︰產生驗證碼圖片
<br /><cfscript> <br />/** <br />* Generates a password the length you specify. <br />* <br />* @param numberOfCharacters Lengh for the generated password. <br />* @return Returns a string. <br />* @author Tony Blackmon (fluid@sc.rr.com) <br />* @version 1, April 25, 2002 <br />*/ <br />function generatePassword(numberofCharacters) { <br /> var placeCharacter = ""; <br /> var currentPlace=0; <br /> var group=0; <br /> var subGroup=0; <br /> <br /> for(currentPlace=1; currentPlace lte numberofCharacters; currentPlace = currentPlace+1) { <br /> group = randRange(1,4); <br /> switch(group) { <br /> case "1": <br /> subGroup = rand(); <br /> switch(subGroup) { <br /> case "0": <br /> placeCharacter = placeCharacter & chr(randRange(33,46)); <br /> break; <br /> case "1": <br /> placeCharacter = placeCharacter & chr(randRange(58,64)); <br /> break; <br /> } <br /> case "2": <br /> placeCharacter = placeCharacter & chr(randRange(97,122)); <br /> break; <br /> case "3": <br /> placeCharacter = placeCharacter & chr(randRange(65,90)); <br /> break; <br /> case "4": <br /> placeCharacter = placeCharacter & chr(randRange(48,57)); <br /> break; <br /> } <br /> } <br /> return placeCharacter; <br />} <br /></cfscript> <br /> <br /><!--- 驗證圖檔路徑 ( 檔案會自動刪除 ) ---> <br /><cfset img_file = "D:/authimg.gif"> <br /> <br /><!--- 產生驗證碼 ---> <br /><cfset __auth_xyz_123__ = generatePassword(5)> <br /><cfcookie name="__auth_xyz_123__" value="#__auth_xyz_123__#" expires="1"> <br /> <br /><cfexecute name = 'C:/ImageMagick/convert' <br /> arguments = '-background lightblue -fill blue -pointsize 25 -font Utopia-Italic label:"#__auth_xyz_123__#" #img_file#' <br /> timeout = '200'> <br /></cfexecute> <br /><cfcontent type='image/gif' file="#img_file#" deletefile="yes"> <br />
authimg_check.cfm︰驗證碼使用測試
<br /><cfif isdefined("Form.__auth_xyz_123__")> <br /> <cfif Cookie.__auth_xyz_123__ eq Form.__auth_xyz_123__> <br /> <cfset check = "True"> <br /> <cfelse> <br /> <cfset check = "False"> <br /> </cfif> <br /> <br /> <cfoutput> <br /> <fieldset> <br /> <legend>驗證結果︰<span style="color:##FF0000; font-weight:bold">#check#</span></legend> <br /> Cookie.__auth_xyz_123__ = #Cookie.__auth_xyz_123__# <br /> <br> <br /> Form.__auth_xyz_123__ = #Form.__auth_xyz_123__# <br /> <cfcookie name="__auth_xyz_123__" expires="now"> <br /> <br> <br /> <a href="authimg_check.cfm">重試</a> <br /> </fieldset> <br /> </cfoutput> <br /><cfelse> <br /> <form name="frm_alert" method="post" action=""> <br /> <fieldset> <br /> <legend>驗證碼︰</legend> <br /> <img src="authimg.cfm?<cfoutput>#randRange(1,9999)#</cfoutput>" /><br> <br /> <input size="5" type="text" name="__auth_xyz_123__" value=""> <br /> <input type="submit" name="btn_submit" value="submit"> <br /> </fieldset> <br /> </form> <br /></cfif> <br />
沒有留言:
張貼留言
‹
›
首頁
查看網路版
沒有留言:
張貼留言