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

response.redirect(url)
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?