Probleme bd

Signaler
Messages postés
757
Date d'inscription
vendredi 7 septembre 2001
Statut
Membre
Dernière intervention
19 juin 2008
-
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
-
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 !

strSQL = "SELECT * FROM USER_DESC " strSQL strSQL & "WHERE USER_LOGIN_NAME '" & strLogin & "'" strSQL strSQL & " AND USER_PASW '" & strPassword & "'"

8 réponses

Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
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 !
Messages postés
757
Date d'inscription
vendredi 7 septembre 2001
Statut
Membre
Dernière intervention
19 juin 2008

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....
Messages postés
757
Date d'inscription
vendredi 7 septembre 2001
Statut
Membre
Dernière intervention
19 juin 2008

meme avec ton code il ne trouve pas l'enregistrement, le nom de l'usager... je sais pas ce qu'il ce passe !!!
Messages postés
1642
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
3
Et avec tout sur une seule ligne ?
strSQL "SELECT * FROM USER_DESC WHERE USER_LOGIN_NAME '" & strLogin & "' AND USER_PASW = '" & strPassword & "'"

On sait jamais...

Nurgle
C'est une grande folie que de vouloir être sage tout seul !
Messages postés
757
Date d'inscription
vendredi 7 septembre 2001
Statut
Membre
Dernière intervention
19 juin 2008

non pas plus !! ces qu'un enregistrement entre et pas l'autre je suis perdu la !!!
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
1
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).

C'est quoi comme BD ?
yopyop
Messages postés
757
Date d'inscription
vendredi 7 septembre 2001
Statut
Membre
Dernière intervention
19 juin 2008

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

Response.Redirect("GENR_welc.asp?lang=1")

End If%>


<%'RS.Close
'Set RS = Nothing
%>
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
1
D'abord j'espère que tes users on tous un login différent, ensuite tu peux remplacer

strLogin = cstr(Request.form("lName"))
sLangue = Request.Form("langue")
strPassword = cstr(Request.form("password"))

par

strLogin = Trim("" & Request.form("lName"))
sLangue = Trim("" & Request.Form("langue")
strPassword = Trim("" & Request.form("password"))

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....

Mais ferme tes browser....

yopyop