萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> ASP 程式設計

ASP 實作驗證碼功能:imgchk 元件整合教學

功能簡介

提供一組現成的驗證碼元件(imgchk 資料夾),包含驗證碼圖片產生、Session 儲存、前端顯示與後端驗證,可直接套用於會員註冊、留言板、登入表單等。

檔案結構

imgchk/
├── validatecode.asp   ' 產生驗證碼圖片並寫入 Session
├── validatebody.fix   ' 圖片繪製核心邏輯
└── validatehead.fix   ' HTTP 標頭設定

三步驟整合

步驟 1:部署檔案

將 imgchk 資料夾完整放置於需加入驗證碼的頁面同層目錄(如 /cnbruce/imgchk/)。

步驟 2:前端頁面加入顯示與輸入框

<!-- 顯示驗證碼圖片 -->
<img src="imgchk/validatecode.asp" id="vcode" onclick="this.src='imgchk/validatecode.asp?'+Math.random()" style="cursor:pointer" title="點擊更換" />
<br>
<input type="text" name="validatecode" size="10" maxlength="4" placeholder="輸入驗證碼" />

技巧:onclick 事件加入隨機參數,點擊即可刷新驗證碼,無需重整頁面。

步驟 3:接收處理頁面驗證

<%
If Trim(Request.Form("validatecode")) = "" Or _
   Trim(Session("cnbruce.com_ValidateCode")) <> Trim(Request.Form("validatecode")) Then
  Response.Write "請正確輸入驗證碼"
  Response.End
End If
' 驗證通過,繼續後續邏輯...
%>

自訂 Session 名稱

若需變更 Session 變數名(預設 cnbruce.com_ValidateCode),需修改兩處:

  1. imgchk/validatecode.asp 內所有 cnbruce.com 字串。
  2. 驗證頁面中的 Session("cnbruce.com_ValidateCode")。

常見問題:驗證碼圖片顯示紅叉(X)

原因:伺服器 ADODB.Stream 或 FileSystemObject 元件被停用。

解決方法(需伺服器管理員權限)

  1. 重新註冊 ADODB.Stream:
    regsvr32 "C:\Program Files\Common Files\System\ado\msado15.dll"
  2. 重新註冊 FSO:
    regsvr32 /u scrrun.dll && regsvr32 scrrun.dll
  3. 虛擬主機用戶請聯繫空間商處理。

客戶端 Cookie 被封鎖導致驗證失敗

瀏覽器隱私設定過高會阻擋 Session Cookie。建議訪客將隱私等級設為「中」或將網站加入信任清單。

進階改良:AJAX 驗證

// 前端 jQuery 範例
$.post("check_code.asp", {code: $("#validatecode").val()}, function(res){
  if(res=="ok"){ $("#form").submit(); }
  else{ alert("驗證碼錯誤"); $("#vcode").click(); }
});

避免整頁重新載入,提升使用者體驗。

copyright © 萬盛學電腦網 all rights reserved