Problème de lecture dans une base SQL server

Résolu
kingstyle Messages postés 18 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 12 mai 2005 - 22 avril 2005 à 10:35
kingstyle Messages postés 18 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 12 mai 2005 - 22 avril 2005 à 14:13
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

kingstyle Messages postés 18 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 12 mai 2005
22 avril 2005 à 13:26
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
3
cs_Yoyo2B Messages postés 125 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 6 mars 2008
22 avril 2005 à 13:53
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 ...
3
cs_Yoyo2B Messages postés 125 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 6 mars 2008
22 avril 2005 à 12:08
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 ...
0
kingstyle Messages postés 18 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 12 mai 2005
22 avril 2005 à 14:13
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 !!!
0