Proteger une page par login/password

Contenu du snippet

Il y a bcp de questions sur la protection de pages dans le forum. Voici un bout de code qui fonctionne parfaitement, à vous de l'adapter à votre sauce =)
le code contient 2 pages, une avec un formulaire et l'autre avec l'identification.
bonne prog' !

Source / Exemple :


PAGE 1 :
<form name="identification" action="modules/verif.asp" method=post>
  <table width="450" border="0" cellspacing="0" cellpadding="0" align="center">
    <tr> 
      <td colspan="2" bgcolor="#99CCFF"><font face="Arial, Helvetica, sans-serif" size="2" color="#000000">&#149; 
        <u>Identifiez - vous</u> : </font></td>
    </tr>
    <tr bgcolor="#FFFFFF"> 
      <td valign="bottom" width="60%"> 
        <div align="right"><font face="Arial, Helvetica, sans-serif" size="2" color="#000000">Login 
          : </font></div>
      </td>
      <td width="40%"> <font face="Arial, Helvetica, sans-serif" size="3" color="#000000"> 
        &nbsp; 
        <input type="text" name="idlog">
        </font></td>
    </tr>
    <tr bgcolor="#FFFFFF"> 
      <td valign="bottom" width="60%"> 
        <div align="right"><font face="Arial, Helvetica, sans-serif" size="2" color="#000000">Password 
          : </font></div>
      </td>
      <td width="40%"> <font face="Arial, Helvetica, sans-serif" size="3" color="#000000"> 
        &nbsp; 
        <input type="password" name="idpass">
        </font></td>
    </tr>
    <tr bgcolor="#FFFFFF"> 
      <td valign="bottom" width="60%"> 
        <div align="right"><font face="Arial, Helvetica, sans-serif" size="2" color="#000000"> 
          <input type="reset" name="button2" value="Effacer">
          &nbsp;&nbsp;</font></div>
      </td>
      <td width="40%"> <font face="Arial, Helvetica, sans-serif" size="3" color="#000000"> 
        &nbsp;&nbsp; 
        <input type="submit" name="Submit" value="Identifier">
        </font></td>
    </tr>
  </table>
</form>

---------------------------------------------------------------------------------------------
PAGE 2 :

<%
<%
'chaine de connection avec dsn
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "mabase"

'on recupere les champs du formulaire (method post : nom visible ds l'url, pas de querystring!!!)
Dim idlog
idlog=Request.Form("idlog")
Dim idpass
idpass=Request.Form("idpass")

'on cherche si le nom est bien dans la base
'------------------------------------------
SQL = "Select User.* From User Where User.[Nomuser]= '"&idlog&"';"

Set RsId = Server.createObject("ADODB.Recordset")
RsId.Open SQL, Connection, 3

if RsId.RecordCount = 0 then
%>
<script language=javascript>
alert('Utilisateur non enregistré');
history.back();
</script>
<%elseif RsId("Password")= idpass then%>
Bienvenue&nbsp;<%=RsId("Nomuser")%>. Vous êtes bien identifié(e).<br>

<%Session ("Id") = RsId("Nomuser")%>

<a href="../mapage.asp">lien</a>
<%else%>
<script language=javascript>
alert('Mot de passe incorrect');
history.back();
</script>
<%
end if
%>

Conclusion :


pour proteger d'autres pages, faites un test sur la session, si elle est vide, pas de page, sinon affichage normal...

Si vous avez des erreurs, faites attention à vos requetes et à vos variables!
          • IMPORTANT MAJ 21/03/2003: *****

Somei m'a informé que cette source comportait un pb de sécurité : qqn de mal intentionné peut passer outre cette vérification. Pour l'en empecher dans la plupart des cas, il suffit de faire appel à une procédure qui enlevera tous les caracteres spéciaux de vos input text avant le test avec la base de données.
Merci à lui et bonne prog' ;o)

A voir également

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.