萬盛學電腦網

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

ASP 檢測使用者名稱是否存在(AJAX 後端)

功能說明

提供 AJAX 呼叫的後端頁面,接收 userName 查詢字串,查詢 Access 資料庫 user 資料表,回傳 1(存在)或 0(不存在)。

完整程式碼 (checkUserName.asp)

<%
Dim conn, rs, connStr, sqlCmd, userName

' 取得查詢字串參數
userName = Request.QueryString("userName")

' 建立資料庫連線
Set conn = Server.CreateObject("ADODB.Connection")
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data.mdb")
conn.Open connStr

' 執行查詢
Set rs = Server.CreateObject("ADODB.Recordset")
sqlCmd = "SELECT id FROM [user] WHERE userName = '" & userName & "'"
Set rs = conn.Execute(sqlCmd)

' 判斷結果
Dim exist
If rs.EOF Then
    exist = 0   ' 不存在
Else
    exist = 1   ' 存在
End If

' 清理資源
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing

' 輸出結果
Response.Write(exist)
%>

資安風險與改進

  • SQL Injection:直接串接字串極度危險,必須使用參數化查詢(Command.Parameters)。
  • 資料庫路徑暴露:data.mdb 放在網站目錄下可被直接下載,應移至 App_Data 或網站根目錄外。
  • 錯誤處理:缺乏 On Error Resume Next 與錯誤記錄。
  • 回傳格式:建議改用 JSON 格式({"exists":true})便於前端擴充。

參數化查詢改寫範例

<%
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = conn
cmd.CommandText = "SELECT id FROM [user] WHERE userName = ?"
cmd.Parameters.Append cmd.CreateParameter("@uname", 200, 1, 50, userName) ' adVarChar
Set rs = cmd.Execute
%>
copyright © 萬盛學電腦網 all rights reserved