Bonjour,
Je me présente Mezzanine, apprenti developpeurs (débutant).
Je vous expose mon problème :
Je souhaite par l'intermédiaire d'un formulaire (login et password) accéder à une partie de mon site qui sera donc vérouillé.
Trois types de visiteurs : revendeurs, groupements, distributeurs
chacun de ces visiteurs possèderont des login et password différents pour pouvoir accéder à leurs espaces.
les logins et password seront entreposés dans une table intitulée : exo_pass (BD Access).
ma page connexion (conn_nemoi.asp) :
<%
' FileName="Connection_odbc_conn_dsn.htm"
' Type="ADO"
' HTTP="false"
' Catalog=""
' Schema=""
MM_conn_nemoi_STRING = "dsn=src_nemoi;"
%>
ma connexion est avec DSN, présence d'un serveur web personnel et donc d'un alias (anemoi)
Ma page admin, qui est donc le formulaire
(page admin.asp) :
<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="../Connections/conn_nemoi.asp" -->
<%
Dim rs_conn__MMColParam
rs_conn__MMColParam = "1"
if (Request.QueryString("login") <> "") then rs_conn__MMColParam = Request.QueryString("login")
%>
<%
set rs_conn = Server.CreateObject("ADODB.Recordset")
rs_conn.ActiveConnection = MM_conn_nemoi_STRING
rs_conn.Source = "SELECT * FROM exo_pass WHERE login = '" + Replace(rs_conn__MMColParam, "'", "''") + "'"
rs_conn.CursorType = 0
rs_conn.CursorLocation = 2
rs_conn.LockType = 3
rs_conn.Open()
rs_conn_numRows = 0
%>
<%
' Si le lien contient ?pass=no
' on vide le cookie
if request("pass")="no" then
response.cookies("passe6")=""
' Sinon si le visiteur a validé le formulaire
elseif request("pass")<>"" then
' on compare avec la liste
rs_conn.Open "SELECT * FROM exo_pass",Conn , 3, 3
do while not rs_conn.eof
' si le login et le pass sont OK
if request("login")=rs_conn("login") _
and request("pass")=rs_conn("pass") then
' on stocke le niveau dans un cookie
response.cookies("passe6")=rs_conn("nivo")
exit do
end if
rs_conn.moveNext
loop
rs_conn.close
end if
%>
<!-- #include file="_protect.asp"-->
<%
' Lien si identifié
if protect<"4" then%>
<A href="?pass=no">Déconnecter</A><BR>
<% ' Liste des login/pass si niveau 1 ou 2
if protect<"3" then%>
<br>
<table bgcolor=#EEEEFF>
<tr>
<th colspan=3 nowrap
>Liste des mots de passe</th>
</tr>
<tr bgcolor=#DDDDEE>
<td> LOGIN </td>
<td> PASSWORD </td>
<td> </td>
</tr>
<% SQL = "SELECT * FROM exo_pass" _
& " WHERE nivo > " & protect _
& " ORDER BY nivo,login"
rs_conn.Open SQL,Conn , 3, 3
while not rs_conn.eof%>
<tr>
<td nowrap><%=rs_conn("login")%></td>
<td nowrap><%=rs_conn("pass")%></td>
<td><%=nivo(rs_conn("nivo")-1)%></td>
</tr>
<%rs_conn.moveNext
wend%>
</table>
<%end if
else ' Formulaire d'identification sinon
%>
<form method="post" action="admin.asp">
<table>
<tr>
<td>Login<br>
<input name="login">
</td>
<td>Password<br>
<input type="password" name="pass">
</td>
<td><br>
<input type="Submit" value="Entrer">
</td>
</tr>
</table>
</form>
<%end if
' Déconnexion
rs_conn.Close()
%>
Ma page _protect.asp :
<% ' Libellés des niveaux
nivo = Array("revendeurs","groupements","distributeurs")
' On lit le cookie
protect=request.cookies("passe6")
' si vide >> niveau 4
if protect="" then protect="4"%>
<body bgcolor="#FFFFFF">
<center>
<% ' si identifié >> lien vers page Admin
if protect<"4" then
%><A href="admin.asp">Page
<%=nivo(cInt(protect)-1)%></A> -
<%end if%>
<A href="page1.asp">Page 1</A> -
<A href="page2.asp">Page 2</A> -
<A href="page3.asp">Page 3</A>
</center><hr>
enfin un exemple de page : page1.asp
<!-- #include file="_protect.asp"-->
<% ' Privée pour le niveau 1
if protect<"2" then%>
Version privée de votre page 1
<%else%>
Version publique de votre page 1
<%end if%>
Mon problème est semble t-il un problème de connexion à la base de donnée
l'Aperçu dans le navigateur (pour la page Admin après identification du login et
du password) donne ceci :
[ ADODB.Recordset erreur '800a0e79'
Cette opération n'est pas autorisée si l'objet est ouvert.
/anemoi/Connections/admin.asp, ligne 26 ]
Pouvez-vous m'aider...
merci d'avance,
mezzanine