Message d'erreur lors d'une mauvaise identification.

Résolu
groovesalade Messages postés 2 Date d'inscription vendredi 13 octobre 2006 Statut Membre Dernière intervention 22 décembre 2007 - 22 déc. 2007 à 11:32
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 22 déc. 2007 à 23:05
Bonjour, je viens de terminer un site en ASP mais il subsiste une dernière petite erreur. Ce n'est pas important mais j'aimerai bien comprendre :
J'ai une page login.asp avec deux champs - Login et - Password justement (le truc classique)

Lorsque le premier champ de la page login.asp est rempli avec le bon code d'accés et le second (password) avec un mauvais je suis redirigé sur login.asp, jusque là c'est normal.

Par contre lorsque je mets un login bidon et un password bidon (par exemple) au lieu de revenir sur login.asp j'ai le message :

ADODB.Fielderreur '800a0bcd'

BOF ou EOF est égal à True ou l'enregistrement actuel a été supprimé. L'opération demandée nécessite un enregistrement actuel.

/jerome/admin/checkadminlogin.asp, ligne 11

Donc base de données ne contenant pas l'enregistrement ...

Pourquoi ça me mets ça alors que je devrais être redirigé sur login.asp ???

La page Login.asp :

<%
Response.Write("<FORM METHOD= ""POST"" ACTION=""checkadminlogin.asp"">")
Response.Write("<FORM METHOD=""POST"" ACTION=""checkadminlogin.asp"">")
Response.Write("Veuillez vous identifier
Login :")
Response.Write("")
Response.Write("Password :")
Response.Write("")
Response.Write("")
Response.Write("</FORM>")
%>

La page checkadmin.asp :

<%
Response.Buffer = True
SQL = "Select * FROM admin where name='" & Request.Form("loginName") & "'"
cmdDC.CommandText = SQL
Set RecordSet = Server.CreateObject("ADODB.Recordset")
RecordSet.Open cmdDC, , 0, 2
adName = Recordset.Fields("name")
adPass = Recordset.Fields("password")

   Session("Logged") = ""
   sName=Request.Form("loginName")
   sPassword=Request.Form("password")  
    Response.Write("<CENTER>")
        If sNAME=adName AND sPassword=adPass THEN
            logininfo=True
            session("Loggin") = sNAME
            Session("admin") = "YES"
            Response.Clear
            Response.redirect "index.asp"
        Else
            Response.Clear
            Response.redirect "login.asp"
        End If

Recordset.Close
Set Recordset = Nothing
Set cmdDC= Nothing
%>

Je devrai avoir logiquement une redirection sur login.asp si codes erronés et sur index.asp si codes corrects et non pas ce "tudjuuuu" de message d'erreur ...

Merci pour votre aide :)

Ps : J'ai essayé tout un tas de codes javascript avec messages d'alertes mais rien n'y fait.

4 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
22 déc. 2007 à 12:09
Et hop, le tout en UNE SEULE page !!

<%
If Request.Form("Action") = "Login" Then
 Dim SQL
 Dim Rs
 SQL = "SELECT * FROM admin WHERE name='" & Request.Form("loginName") & "' AND password='" & Request.Form("password") & "';"
 Set Rs = Conn.Execute(SQL)
 Session("Logged") = ""
 If Not(Rs.EOF) THEN
  logininfo=True
  session("Loggin") = Rs("name")
  Session("admin") = "YES"
  Response.Redirect "index.asp"
  Else
   Response.Redirect "login.asp"
 End If
 Rs.Close
 Set Rs = Nothing
 Else
%>
<FORM METHOD="POST">
 
 Veuillez vous identifier

 Login :
 Password :
 
</FORM>
<%
End If
%>

Remplace "Conn" par le nom de ta connexion
_______________________________________________________________________
VB.NETis good ...VB6is better <f></f>
3
groovesalade Messages postés 2 Date d'inscription vendredi 13 octobre 2006 Statut Membre Dernière intervention 22 décembre 2007
22 déc. 2007 à 14:17
Je te remercie pour ton aide et ta réactivité ghuysmans99, ça  fonctionne bien :)
Je te souhaite de passer de bonnes fêtes !
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
22 déc. 2007 à 14:57
Toi aussi
_______________________________________________________________________
VB.NETis good ...VB6is better <f></f>
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
22 déc. 2007 à 23:05
Oups ... J'ai oublié d'éviter l'injection !

<%
Public Function Pure(S)
 Pure = Replace(S,"'","''")
End Function

If Request.Form("Action") = "Login" Then
 Dim SQL
 Dim Rs
 SQL
"SELECT * FROM admin WHERE name'" & Pure(Request.Form("loginName"))
& "' AND password='" & Pure(Request.Form("password")) & "';"
 Set Rs = Conn.Execute(SQL)
 Session("Logged") = ""
 If Not(Rs.EOF) THEN
  logininfo=True
  session("Loggin") = Rs("name")
  Session("admin") = "YES"
  Response.Redirect "index.asp"
  Else
   Response.Redirect "login.asp"
 End If
 Rs.Close
 Set Rs = Nothing
 Else
%>
<FORM METHOD="POST">
 
 Veuillez vous identifier

 Login :
 Password :
 
</FORM>
<%
End If
%>
_______________________________________________________________________
VB.NETis good ...VB6is better <f></f>
0
Rejoignez-nous