Verification nom/mot de passe a la connection

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 458 fois - Téléchargée 37 fois

Contenu du snippet

Voici une petite procèdure pour sécuriser un peu l'accès à un site ou portion de site.

Il faut créer une base Access avec la table "Agents" minimale suivante :
Nom
Prenom
MDP

Et créer un lien DSN système à cette base sous le nom de "WebAgents"

Source / Exemple :


Index.asp 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>ACCES AU MODULE ...</title>
</head>

<body>

<BR>

<p align="center">
    <center>
    <form name=login action="logon.asp" method="POST">
    <table align="center" valign="center">
    <tr><td>Nom:</td><td><input type="TEXT" name="NoID"></td></tr>
    <tr><td>Mot de passe:</td><td><input type="password"name="password"></td></tr>
    <tr><td colspan=1 align=center>
    <input type="submit" value="Login!"></td></tr>
    </table>
    </form>
    </center>
</html>

Logon.asp

<%
	function crypter(s)
		dim i
		dim temp
	
		for i=1 to len(s)
			temp=temp+chr(asc(mid(s,i,1)) xor 33)
		next
	
		crypter=temp
	end function

   password=crypter(Request.Form("password"))
   NoID=Request.form("NoID")
%>
<html>

<head>
<title>ACCES</title>
</head>

<body>

<%
	dim conn
	dim sql
	dim rs
	dim TNOM, TPRENOM, TTEL, TNIVEAU, TSERVICE, TMDP
	dim qui
	dim ok
	
	ok=0
	
	on error resume next 
	set conn=server.createobject("ADODB.Connection")
	conn.open "WebAgents"
	
	sql="select * from Agents;" // Mettre le nom de la table ou reqête adéquate à la place de Agents
	
	set rs=server.createobject("ADODB.recordset")
	rs.open sql,conn,3,3
	if not rs.eof then
		if rs.recordcount>0 then
			rs.movefirst
			do while not rs.eof 
				TNom=rs.fields("Nom")
				if lcase(NoID)=lcase(TNom) then
					TPRENOM=rs.fields("PRENOM")
					TMDP=rs.fields("MDP")
					if TMDP=password then
						ok=-1
					   response.Redirect "main.asp?Nom="&chr(34)&TNOM&chr(34)&"&Prenom="&chr(34)&TPRENOM&chr(34)
				   	   response.flush
				      response.end
					end if
				end if
				rs.movenext
			loop
		else
			response.write("<B>la base est vide</B>")
		end if
	end if
	rs.close
	conn.close
	set conn=nothing
	if ok=0 then response.write("Mot de passe ou NoID erroné")
%>

</body>

</html>

main.asp

<%Response.Buffer = True

   dim TNom
   dim TPrenom
   dim id
   
   TNom=request("Nom")
   TPrenom=request("Prenom")
   
   id=mid(TPrenom,2,len(TPrenom)-2) &" "&mid(TNom,2,len(TNom)-2)
%>
<html>

<head>
<meta http-equiv="Content-Language" content="fr">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Administration ...</title>
</head>

<body>

<p align="left"><font size="1">Bienvenue&nbsp;<% =id %></font>
La suite du code ici
</body>

</html>

Conclusion :


A+

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
mardi 24 mai 2005
Statut
Membre
Dernière intervention
17 avril 2006

Bonjour,
J'ai essayé d'intégrer ce script dans mes pages mais
à chaque fois il m'affiche ce message d'erreur:
-*-------------------------------------------------------*-
Pages ASP error 'ASP 0113'

Délai d'exécution du script dépassé

/fichier/logon.asp

Le délai maximal d'exécution d'un script a été dépassé. Vous pouvez changer cette limite en donnant une nouvelle valeur à la propriété Server.ScriptTimeout ou en changeant la valeur dans les outils d'administration d'IIS.
-*----------------------------------------------*-
Merci de m'expliquer quelle est l'origine de cette erreur .
ou si vous avez un autre script asp d'authentification.
Merci pour votre aide.
Essafir
Messages postés
97
Date d'inscription
lundi 26 novembre 2001
Statut
Membre
Dernière intervention
24 février 2012

Ok, je vais essayer d'améliorer tout ça selon tes conseils.
Je ne pratique l'ASP que depuis peu, et il y a tant à voir.
Au début, je ne soupçonnais pas l'étendue de ce langage !
Mais maintenant, je l'apprécie beaucoup.
Je suis aussi en train de chercher comment faire interagir le vbscript (ASP) et le PHP ... Pas évident, dirait-on.
a+
Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
4
Au lieu de mettre une boucle avec ta comparaison entre le MDP fourni et celui de la base, il suffit d'envoyer le MDP fourni dans la requette SQL :

SELECT * FROM TaTable WHERE MDPBase = MDPTransmis

Ca te renverra alors soit 1 élément (si unicité garantie) et alors le User dera identifié, soit 0 élément et dans ce cas le MDP est faux.

C'est plus court et plus efficace.

F___
Messages postés
97
Date d'inscription
lundi 26 novembre 2001
Statut
Membre
Dernière intervention
24 février 2012

Je corrige :-)
J'essaye de faire (un peu) bouger le site en cette période de canicule :)
pas facile
a+
Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
4
Très classique, ce type de source existe en de nombreuses version mais soit.
Pour le commentaire, ce n'est pas "Et créer un accés DNS système" mais un lien DSN système.
Merci de corriger.

F___

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.