首先,我要做的是将访问数据库链接到成功的站点。现在我试图在注册页面上显示一条特定的消息,说明输入的电子邮件已存在,如果存在,则代替通常在电子邮件存在时出现的odbc错误消息,但是我收到我的错误消息,显示天气是否存在。 我到目前为止所做的代码如下所示,我们将会对可能出现的错误进行深入了解。
sql="INSERT INTO Customers (Customerfirstname, Customerlastname, Email, Password, Address, Phoneno) VALUES (' "&fname&"',' "&lname&"','"&email&"',' "&password&"',' "&caddress&"',' "&phno&"')"
on error resume next
Con.Execute sql
if err.number <> 0 then
response.write("E-mail already exist")
else
' append the query string to the redirect URL
If (Request.QueryString <> "") Then
If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0) Then
MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
Else
MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
End If
End If
end if
Response.Redirect(MM_editRedirectUrl)
con.close: set conn = nothing
答案 0 :(得分:1)
在尝试将任何内容插入数据库之前,您需要执行一些验证。
首先,抓住他们通过表单提交的电子邮件地址,然后清理它以进行注入(如此处所述),然后运行SELECT查询以查看该地址是否存在。
如果它确实存在,请将它们重定向到一个漂亮的错误页面,如果它不存在,一旦你清理了其余的用户提交,那么它应该插入你的数据库。
另外,使用“if err.number&lt;&gt; 0然后response.write(”电子邮件已经存在“)”很糟糕。如果电子邮件地址不存在但是他们尝试在您的数据库中插入太长的字符串怎么办?或者如果DB由于某种原因不可用怎么办?你会给他们错误的错误。
答案 1 :(得分:0)
检查实际错误是什么:
if err.number <> 0 then
response.write(err.description)
else
..