cs_Jackboy
Messages postés757Date d'inscriptionvendredi 7 septembre 2001StatutMembreDernière intervention19 juin 2008
-
3 mars 2005 à 17:33
cs_Yopyop
Messages postés586Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention10 février 2010
-
4 mars 2005 à 19:49
Bonjour !
J'ai une bd et via un login je tente de me connecter. J'ai des champs entrer dans ma bd, mais quelques un ne fonctionne pas, et je ne sais pas pk ! Ces comme si les enregistrement ne serait pas valide !!! Ex.: strLogin admin et strPassword test ces ok mais strLogin test et strPassword test n'entre pas !!!! Pourtant ces deux usagers sont bien entrer dans la bd !
cs_Nurgle
Messages postés1642Date d'inscriptionsamedi 6 novembre 2004StatutMembreDernière intervention28 avril 20114 3 mars 2005 à 18:41
Salut
Je te conseille d'éviter le WHERE ... AND ...
Fait plutôt :
strSQL = "SELECT * FROM USER_DESC "strSQL strSQL & "WHERE USER_LOGIN_NAME '" & strLogin & "'"
set Res=TaConnection.Execute(strSQL)
If Res.EOF=false Then ' tu tests si il y a bien un gars nommé strLogin
If Res("password") = strPassword Then
Response.Write("cool, ça marche !")
end if
end if
Comme ça la conparaison des passwords se fait avec des variables et plus avec du sql...
Nurgle C'est une grande folie que de vouloir être sage tout seul !
cs_Jackboy
Messages postés757Date d'inscriptionvendredi 7 septembre 2001StatutMembreDernière intervention19 juin 2008 3 mars 2005 à 20:59
je sais qu'il y a des facon de faire différente, mais ma question réside dans le fait qu'un enregistrement sur 2 fonctionne !! ces sa que je ne comprend pas !! Il sont bien entrer dans la bd et sa ne fonctionne pas....
cs_Yopyop
Messages postés586Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention10 février 20101 3 mars 2005 à 23:57
Est-tu sûr qu'il n'y a pas de différence entre ce que tu as dans tes variables et dans ta base de données ?
As-tu essayé avec d'autres données que celles que tu nous montre
Ex.: strLogin admin et strPassword test ces ok mais strLogin test et strPassword test
Peut-être admin dans ta base est écrit Admin, ou il y a un espace avant ou après???
Essaye avec d'autres données de ta base.
En ce qui concerne le
strSQL = "SELECT * FROM USER_DESC "strSQL strSQL & "WHERE USER_LOGIN_NAME '" & strLogin & "'"
set Res=TaConnection.Execute(strSQL)
If Res.EOF=false Then ' tu tests si il y a bien un gars nommé strLogin
If Res("password") = strPassword Then
Response.Write("cool, ça marche !")
end if
end if
de Nurgle, c'est à éviter (mauvaise performance) et en plus ca ne fonctionne pas (s'il y a plus personnes avec le même USER_LOGIN_NAME).
cs_Jackboy
Messages postés757Date d'inscriptionvendredi 7 septembre 2001StatutMembreDernière intervention19 juin 2008 4 mars 2005 à 03:23
base de donnée access ! jai vérifier et revérifier, quelques un fonctionne et quelque autre non. Je trouve sa vraiment bizarre...
Mon systeme (intranet) demande un login ce qui est fonctionnel sur ce cote, tous les usagers sont reconnu, mais j'utilise un genre appli gréfé a mon systeme, qui lui à été fait par un consortium. J'ai vérifié leur programmation (code si haut) et tous me semble ok. Je vais vous mettre ce qui a dans ma page, le bout de code !
Dim strLogin
Dim strPassword
Dim strSQL
Dim MyConn
Dim RS
Dim filesys
Dim readfile
Dim strContent
Dim intContent
Dim intPosition
Dim strFile
Dim intSearchVariable
'récupération des données du formulaire
strLogin = cstr(Request.form("lName"))
sLangue = Request.Form("langue")
strPassword = cstr(Request.form("password"))
'Trouver le chemin d'accès au répertoire
Session("GLOBAL_CHEMIN") = server.mappath(".")&""
strFile = server.mappath(".")&"\m3cat.ini"
'lecture du fichier d'initialisation
Set filesys = CreateObject("Scripting.FileSystemObject")
Set readfile = filesys.OpenTextFile(strFile, 1, false)
If readfile.AtEndOfStream = True Then
readfile.close
Set readfile = Nothing
Set readfile = filesys.OpenTextFile(strFile, 1, false)
End If
strContent = readfile.ReadLine
strContent = Trim(strContent)
intContent = Len(strContent)
intSearchVariable = Instr(strContent, "[database]")
If intSearchvariable < 1 Then
While intSearchVariable < 1
strContent = readfile.ReadLine
intSearchVariable = Instr(strContent, "[database]")
intContent = Len(strContent)
Wend
End If
Session("GLOBAL_DB") = Right(strContent, intContent-intSearchVariable-9)
If readfile.AtEndOfStream = True Then
readfile.close
Set readfile = Nothing
Set readfile = filesys.OpenTextFile(strFile, 1, false)
End If
strContent = readfile.ReadLine
strContent = Trim(strContent)
intContent = Len(strContent)
intSearchVariable = Instr(strContent, "[connection]")
If intSearchvariable < 1 Then
While intSearchVariable < 1
strContent = readfile.ReadLine
intSearchVariable = Instr(strContent, "[connection]")
intContent = Len(strContent)
Wend
End If
Session("GLOBAL_CONNECTION") = Right(strContent, intContent-intSearchVariable-11)
If readfile.AtEndOfStream = True Then
readfile.close
Set readfile = Nothing
Set readfile = filesys.OpenTextFile(strFile, 1, false)
End If
strContent = readfile.ReadLine
strContent = Trim(strContent)
intContent = Len(strContent)
intSearchVariable = Instr(strContent, "[softmap]")
If intSearchvariable < 1 Then
While intSearchVariable < 1
strContent = readfile.ReadLine
intSearchVariable = Instr(strContent, "[softmap]")
intContent = Len(strContent)
Wend
End If
Session("GLOBAL_SOFTMAP") = Right(strContent, intContent-intSearchVariable-8)
readfile.close
Set readfile = Nothing
Set filesys = Nothing
'création et ouverture d'une connexion
Set MyConn = Server.CreateObject("ADODB.Connection")
MyConn.Open Session("GLOBAL_CONNECTION")
Set session("MyConn") = MyConn
'********************************************************
' ICI QUE SA (*%###@@*&?
'********************************************************
strSQL = " SELECT * FROM USER_DESC " strSQL strSQL & "WHERE USER_LOGIN_NAME '" & strLogin & "'" strSQL strSQL & " AND USER_PASW '" & strPassword & "'"
Set RS = MyConn.Execute(strSQL)
If RS.EOF Then
Response.Redirect("login.asp?Incorrect=True")
Else
Session("GLOBAL_user_role_code") = RS("USER_ROLE_CODE")
Session("GLOBAL_cult_prof_id") = RS("CULT_PROF_ID")
Session("GLOBAL_defl_temp_id") = RS("DEFL_TEMP_ID")
Session("GLOBAL_user_login_name") = strLogin
RS.Close
strSQL = " UPDATE USER_DESC " strSQL strSQL & " SET USER_SESSION "&Session.SessionID strSQL strSQL & " WHERE USER_LOGIN_NAME '"&strLogin&"'"
Set RS = MyConn.Execute(strSQL)
Application.Lock
Dim MyArray
Dim i
Dim Found
Found = "N"
MyArray = Application("arrSessionID")
if Application("Nbr_session") > 0 then
for i=0 to Application("Nbr_session")-1
if clng(MyArray(i)) = clng(Session.SessionID) then
Found = "Y"
'Response.Redirect("login.asp?Incorrect=True")
end if
next
if Found = "N" then
Application("Nbr_session") = Application("Nbr_session") + 1
Redim Preserve MyArray(Application("Nbr_session"))
MyArray(Application("Nbr_session")-1) = Session.SessionID
end if
else
Application("Nbr_session") = 1
Redim MyArray(Application("Nbr_session"))
MyArray(Application("Nbr_session")-1) = Session.SessionID
end if
Application("arrSessionID") = MyArray
Application.UnLock
Question:
C'est à la ligne
If RS.EOF Then
Response.Redirect("login.asp?Incorrect=True") <- ici
que ca ne fonctionne pas ou ensuite (problème sql ou de gestion des sessions ?)?
De plus il me semble que....
Est-ce que tu as un system de logout pour virer la session du user ?
Essaye de fermer tout tes browsers entre chaque tests, sinon la session.sessionID reste en mémoire (si je me souviens bien, elle est propre au browser, donc tant que te ne le ferme pas, la session.sessionid existe toujours), ou alors fais une page pour vider ta table USER_DESC (champs session) et retest....