有谁知道为什么这句话
Response.write(rs.Fields.Item("password")&" ; "&rs.Fields.Item("password"))
这样做:
myPass ;
这很奇怪,我从今天早上起就在寻找解决方案。它让我发疯,因为这个结果就是这个代码:
if rs("password") = rs("password") then
是假的!
编辑:
经过其他测试后,我又做了一个发现:
Response.write(rs.Fields.Item("name")&" ; "&rs.Fields.Item("name"))
做:
amdin ; admin
如果我通过他的序数索引更改“密码”,它会执行相同的显示:
myPass ;
编辑:相关代码:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=crm_sandbox; UID=root;PASSWORD=tahina; OPTION=3"
if Request.Form("login") <> "" or Request.Form("mdp") <> "" or Request.Form("redirect") <> "" then
Response.write(Request.Form("mdp")&" ; "&Request.Form("login")&" ; "&Request.Form("redirect")&"<br>")
if Request.Form("login") = "" then
rapport = "<p style='color: red; font-weight: bold;'>Erreur : Veuillez remplir votre nom d'utilisateur.</p>"
elseif Request.Form("mdp") = "" then
rapport = "<p style='color: red; font-weight: bold;'>Erreur : Veuillez remplir votre mot de passe.</p>"
elseif Request.Form("login") <> "" and Request.Form("mdp") <> "" then
sql = "SELECT id, mdp, nom, initiales, couleur, droit FROM connection WHERE nom='"&Request.Form("login")&"';"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open sql, conn
if rs.eof then
rapport = "<p style='color: red; font-weight: bold;'>Erreur : Nom d'utilisateur inconnu.</p>"
elseif rs("mdp") <> Request.Form("mdp") then
rapport = "<p style='color: red; font-weight: bold;'>Erreur : Mot de passe incorect.</p>"
elseif Request.Form("mdp") = rs("mdp") then
Session("util_id") = rs("id")
Session("util_nom") = rs("nom")
Session("util_couleur") = rs("couleur")
Session("util_initiales") = rs("initiales")
Session("util_droit") = rs("droit")
Session.Timeout = 660 'On créer une session de 11 heures
rapport = "<p style='color: green; font-weight: bold;'>Vous êtes à présent connecté !</p>"
if Request.Form("redirect") <> "" then
rapport = rapport&"<p>Vous allez être rédirigé vers votre page dans 3 secondes</p>"
end if
end if
end if
end if
答案 0 :(得分:1)
我之前确实遇到过此问题,当页面首次运行时,记录集的第一个值(值)返回一个值,但在第二次读取记录集(值)时返回空值。或者说你当前的设置正是如此。
这实际上并不是一个众所周知的问题,但仍有一些支持论坛和问题的答案也是如此。
有一些可能导致此问题的理论,例如,在表列数据类型说明符中没有正确的数据类型。记录集对象中的一个小故障,它只返回一次值,因此必须存储在一个对象中。
因为它是返回Null
E.g。
' [Good Read-out] - object empties itself
if rs( "password")_
= rs("password") then
' [Bad Read-out] - object no longer contains values.
这不是一个全面的陈述,这是一个异常,一个小故障,并没有一个坚实的理由支持它除了机器中的幽灵以外的最小流行率。
解决此问题:
仅从当前记录 ONE 时间读出变量。这将不允许该对象清空,因此您可以在以后的代码中比较您的检查,而不会有任何麻烦。
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; DATABASE=crm_sandbox; UID=root;PASSWORD=tahina; OPTION=3"
if Request.Form("login") <> "" or Request.Form("mdp") <> "" or Request.Form("redirect") <> "" then
Response.write(Request.Form("mdp")&" ; "&Request.Form("login")&" ; "&Request.Form("redirect")&"<br>")
if Request.Form("login") = "" then
rapport = "<p style='color: red; font-weight: bold;'>Erreur : Veuillez remplir votre nom d'utilisateur.</p>"
elseif Request.Form("mdp") = "" then
rapport = "<p style='color: red; font-weight: bold;'>Erreur : Veuillez remplir votre mot de passe.</p>"
elseif Request.Form("login") <> "" and Request.Form("mdp") <> "" then
sql = "SELECT id, mdp, nom, initiales, couleur, droit FROM connection WHERE nom='"&Request.Form("login")&"';"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open sql, conn
'------------------------------------------------
'Place record set values in variables first.
Dim rMDP, rID, rNom, rCouleur, rInit, rDroit
rMDP = rs("mdp")
rID = rs("id")
rNom = rs("nom")
rCouleur = rs("couleur")
rInit = rs("initiales")
rDroit = rs("droit")
'------------------------------------------------
if rs.eof then
rapport = "<p style='color: red; font-weight: bold;'>Erreur : Nom d'utilisateur inconnu.</p>"
elseif rMDP <> Request.Form("mdp") then
rapport = "<p style='color: red; font-weight: bold;'>Erreur : Mot de passe incorect.</p>"
elseif Request.Form("mdp") = rMDP then
Session("util_id") = rID
Session("util_nom") = rNom
Session("util_couleur") = rCouleur
Session("util_initiales") = rInit
Session("util_droit") = rDroit
Session.Timeout = 660 'On créer une session de 11 heures
rapport = "<p style='color: green; font-weight: bold;'>Vous êtes à présent connecté !</p>"
if Request.Form("redirect") <> "" then
rapport = rapport&"<p>Vous allez être rédirigé vers votre page dans 3 secondes</p>"
end if
end if
end if
end if
答案 1 :(得分:0)
始终检索记录集值并将它们放在变量中,然后对其进行操作。我在大约15年前开始使用经典ASP时的第一天就学会了rs值的一些奇怪问题。