La cosa, però, mi ha fatto riflettere.
Solitamente, se non è necessaria una routine più articolata (tipo registrazione utente con conferma via email, diversi diritti di accesso per i vari utenti, ecc.), uso un semplicissimo script che prevede la redirezione alla homepage dopo l'autenticazione.
In breve, all'inizio di ogni pagina a cui può accedere solo l'utente autenticato, inserisco l'istruzione
dove "riservato.asp" è un brevissimo file che controlla il contenuto di una variabile di sessione: se la variabile non vale, per esempio, "OK", l'utente viene rediretto alla pagina "login.asp".
Login.asp, a sua volta, acquisisce le variabili "user" e "pass": se queste sono vuote o non corrispondono ad una coppia di valori presenti nel database rimanda al form di inserimento user-pass, altrimenti valorizza
variabile di sessione = "OK"
e quindi rimanda l'utente alla homepage:
response.redirect("index.asp")
Ebbene, ho modificato il tutto in questo modo:
1. file "riservato.asp" da includere all'inizio delle pagine ad accesso limitato:
codice:
<%
if Session("Autenticato")<>"OK" then
Response.Redirect("default.asp?indir="&request.servervariables("url")&"")
end if
%>
dove "default.asp" è la pagina contenente il form per l'inserimento di user-pass
2. il file "default.asp" contiene:
codice:
<%
url = request.querystring("indir")
%>
<FORM ACTION="login.asp" METHOD="post">
<input type="hidden" name="indir" value='<%=url%>'/>
<TABLE ALIGN=CENTER BORDER=0>
<TR>
<TD WIDTH=150 ALIGN=CENTER>NOME UTENTE</td>
<TD>
<INPUT TYPE=TEXT NAME="user" SIZE=20>
</td>
</TR>
<TR>
<TD WIDTH=150 ALIGN=CENTER>PASSWORD</td>
<TD>
<INPUT TYPE=PASSWORD NAME="pwd" SIZE=20>
</TD>
</TR>
<TR>
<TD HEIGHT=30 COLSPAN=2 ALIGN=CENTER>
</TD>
</TR>
<TR>
<TD HEIGHT=30 COLSPAN=2 ALIGN=CENTER>
<INPUT TYPE=SUBMIT VALUE="submit">
</TD>
</TR>
</TABLE>
</FORM>
3.infine "login.asp":
codice:
<%
user = Replace(Request.Form("user"), "'", "''")
pwd = Replace(Request.Form("pwd"), "'", "''")
...
sql = "SELECT * FROM user WHERE user='" &user& "' AND pwd='" &pwd& "'"
...
if RS.eof then
autenticato = false
else
autenticato = true
end if
if autenticato = true then
Session("Autenticato") = "OK"
url = request.form("indir")
if url <> "" then
Response.Redirect(url)
else
Response.Redirect("index.asp")
end if
else
Response.Redirect("default.asp")
end if
%>
In sostanza l'utente non ancora autenticato viene rimandato al form per inserire nome e password passando come variabile l'indirizzo della pagina a cui aveva tentato di accedere
Questa viene inviata a login.asp come campo "hidden" del form e utilizzata, se il login va a buon fine, come argomento dell'istruzione
per rinviare l'utente alla pagina che voleva visitare.
Se la variabile "url" è vuota (cioè se è entrato direttamente alla pagina di login oppure se il primo tentativo di autenticazione non ha avuto successo, per esempio per un errore nel digitare nome o password), l'utente viene reindirizzato alla homepage..........
Mi sembra che funzioni benino.....cosa ne dite?
Ho scoperto l'acqua calda?