Problème de lecture dans une base SQL server [Résolu]

Signaler
Messages postés
18
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
12 mai 2005
-
Messages postés
18
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
12 mai 2005
-
Donc mon problème est que je veux faire une page identification.
Dans ma base j ai trois nom et trois mot de passe. le code suivants fonctionne mais juste pour le premier login et mot de passe de la base. Si vous avez la réponse à mon problème ca serai génial. "log" est la valeur récupérer dans le champ d'identification et pass dans le champ passwd.

<!--#include file="login.asp"-->
<%
Set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = cn
rs.Open "SELECT * FROM ACTEUR", , , , adCmdText


do while not rs.eof

' si le login et le pass sont OK'
if (Request("log")=rs("nom_acteur") And Request("pass")=rs("passwd")) Then
' on redirige vers masque la page d accueil'
Response.Redirect("accueil.asp")
Else
Response.Redirect("masque.asp")
exit do
End if
rs.MoveNext
loop
'deconnexion'
rs.Close
cn.Close
%>
merci d'avance

4 réponses

Messages postés
18
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
12 mai 2005

C bon j ai trouvé tout seul merci bien a toi mais beaucoup plus simple pour une application en intranet.
voila le code pour ceux qui le veulent:
<!--#include file="login.asp"-->
<%
DIM logi
DIM pwd
logi = Request.Form("log")
pwd = Request.Form("pass")


Set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = cn
rs.Open "SELECT * FROM ACTEUR", , , , adCmdText


do while not rs.eof

' si le login et le pass sont OK' if (logi rs.Fields("nom_acteur").value And pwd rs.Fields("passwd").value ) Then
' on redirige vers la page d accueil'
Response.Redirect("accueil.asp")


End if
rs.MoveNext
loop
'deconnexion'
rs.Close
cn.Close
Response.Redirect("masque.asp")

%>

Voila ce code fonctionne parfaitement
Messages postés
125
Date d'inscription
jeudi 27 février 2003
Statut
Membre
Dernière intervention
6 mars 2008

si tu as 10-12 utilisateurs, ça peut aller, mais au-delà d'une centaines, ton do while not "Rst.eof" surcharge le serveur et ralentit l'execution de la page, la clause where est un meilleur compromis et la procédure stockée est le must, étant donné qu'elle est "stockée" donc d'une rapidité d'exécution superieure.
Voilà

happy coding ...
Messages postés
125
Date d'inscription
jeudi 27 février 2003
Statut
Membre
Dernière intervention
6 mars 2008

t'as fait gaffe à la casse pour le login ?
sinon, tu peux faire

<!--#include file="login.asp"-->
<%
Set rs = Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection = cn
rs.Open "SELECT * FROM ACTEUR WHERE nom_acteur='" & Request.QueryForm("log") & "';"
if not Rst.eof then
' si le login est trouvé, tu vérifie le pass
if Request.QueryForm("pass")=rs("passwd") then
'c bon
Response.Redirect("accueil.asp")
else
' pas bon, redirection ver "retape ton psw sale hacker ! lol
end if
else
' pas trouvé !! redirection vers créer un compte ?
end if
'deconnexion'
rs.Close
cn.Close
'--- et n'oublie pas , c pas indispensable, mais ça fait pas de mal, au contraire
set rs = nothing
set cn = nothing
%>

oublie pas "QueryForm" , sinon, en tapant juste une url "tapage.asp?log=toto&pass=titi" on pourra essayer de débloquer le truc en quelquyes heures en force brute.
mais le top pour les connections, c d'utiliser des precédures stockées ... voir la doc ou google !!
si ça marche pas , fais gaffe à la casse (maj/min), et vérifie tes enregistrements pasque sinon
voilà

happy coding ...
Messages postés
18
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
12 mai 2005

Merci pour ton aide mais j ai demandé il n'y aura pas plus de 50 users et environ 5 simultané
donc ca devrait aller je pense !!!