|

REGISTRAZIONE UTENTI

Per
diversi motivi può essere necessario proteggere determinate
pagine con nome utente e password e consentirne la visualizzazione
solo agli utenti registrati: in questo caso lo username
e la password non sono definiti una volta per tutte
ma vengono di volta in volta scelti dall'utente nella
fase di registrazione.
Lo
scopo della registrazione gratuita è duplice: ottenere
nome, cognome, età, email, settore di interesse o altre
informazioni che possono interessare il gestore del
sito.
In
secondo luogo non viene definito un nome utente e una
password validi per tutti ma si lascia tale scelta all'utente:
in questo modo può scegliere parole che riesce a ricordare
con maggiore facilità.
Vediamo
come strutturare tale sistema di 'registrazione' degli
utenti.
Innanzitutto
occorre predisporre un modulo di registrazione in cui
inserire i propri dati e il nome utente e la password
che si desidera usare.
Tali
dati verranno memorizzati in un database (che noi chiamiamo
'pass.mdb' e che memorizziamo nella solita cartella
'database').
Quando si cerca di accedere ad una sezione 'riservata',
si viene reindirizzati verso una pagina che ha il compito
di richiedere il nome utente e la password del visitatore.
Vediamo
che cosa ci serve.
PASS.MDB
Il
database dovrà contenere un'unica tabella di nome 'pass'
composta da campi di testo (per sicurezza portiamo a
255 il numero massimo dei caratteri utilizzabili): nome,
user, pwd
RICREG.HTM
Innanzitutto creiamo il modulo in cui l'utente dovrà
inserire i propri dati. Per semplicità noi chiediamo
solo 'nome', 'username' e 'password', ma, se volete,
potete aggiungere ulteriori voci.
Pertanto
creiamo una normale pagina html e inseriamo un modulo
con tre campi di testo a riga singola: 'form_nome',
'form_username' (in cui l'utente inserirà il
nome utente scelto) e 'form_password'. Tale
modulo dovrà caricare la pagina 'registrami.asp'
Il
codice potrà essere qualcosa del tipo
|
<form
method="POST" action="registrami.asp">
<p
align="center">Nome<br>
<input
type="text" name="form_nome"
size="20"></p>
<p
align="center">Username<br>
<input
type="text" name="form_user"
size="20"></p>
<p
align="center">Password<br>
<input
type="password" name="form_password"
size="20"></p>
<p
align="center"><input type="submit"
value="Invia" name="B1"><input
type="reset" value="Reimposta"
name="B2"></p>
</form>
|
REG_OK.HTM
Visualizziamo
una semplice pagina html che conferma l'avvenuta registrazione
(per esempio 'registrazione effettuata con successo')
REGISTRAMI.ASP
Come
abbiamo accennato il modulo viene 'processato' dalla
pagina 'registrami.asp'.
Scopo
di questa pagina è quello di aggiungere i dati prelevati
dal modulo al nostro database e inviarci un'email avvertendo
che un nuovo utente si è registrato.
Per
prima cosa, quindi, preleviamo i dati dal modulo precedentemente
compilato: utilizziamo di nuovo la funzione 'request.form("nome_campo")'
che abbiamo già avuto modo di spiegare.
|
<%
dim
nome
dim
user
dim
pwd
nome=request.form("form_nome")
user=request.form("form_user")
pwd=request.form("form_password")
|
A
questo punto apriamo la connessione con il database
e, dopo averne selezionato i valori, creiamo un nuovo
record mediante 'rs.addnew'.
|
Dim
conn
Set
conn = Server.CreateObject("ADODB.Connection")
conn.Open
"DRIVER={Microsoft Access Driver (*.mdb)};DBQ="
& server.MapPath("database/pass.mdb")
sql
= "SELECT * FROM pass"
Set
rs = Server.CreateObject("ADODB.Recordset")
rs.Open
sql, conn, 3, 3
RS.AddNew
|
A
questo punto inseriamo i dati presi dal modulo e memorizzati
nelle rispettive variabili
|
rs.Fields("nome")=nome
rs.Fields("user")=user
rs.Fields("pwd")=pwd
|
Fatto
questo aggiorniamo il database e chiudiamo la connessione
|
rs.update
RS.Close
Set
RS=Nothing
conn.Close
Set
conn=Nothing
|
Come
ultima cosa carichiamo la pagina di conferma 'reg_ok.htm'
|
response.redirect("reg_ok.htm")
%>
|
Così
facendo l'utente ha inserito il nome utente e la password
voluti all'interno del database.
Ora
vediamo come dovrà usare questi dati.
PRIVATA_1.ASP
Creiamo
innanzitutto una pagina asp che chiamiamo 'privata_1.asp':
questa è appunto la prima pagina la cui visione è permessa
solo agli utenti registrati che hanno inserito nome
utente e password corretti.
La
pagina è molto simile a 'protetta.asp'.
La
prima cosa da fare è controllare che l'oggetto session
'registrato' abbia 'sicuro' come valore. Questo significa
che l'utente ha passato la verifica di username e password,
in quanto tale session viene creata solo nel momento
in cui l'utente ha inserito username e password corretti.
Se
invece l'utente cerca di accedere a tale pagina semplicemente
digitandone l'indirizzo verrà spostato su una pagina
che lo prega di inserire i propri dati (validate.asp,
che vedremo in seguito)
Quindi
la pagina 'privata_1.asp' sarà così strutturata
|
<%
if
session("registrato") <> "sicuro"
then
response.redirect("validate.asp?url=privata_1.asp")
else
%>
|
Qui
inseriamo il codice normale della pagina
|
<font
face="verdana" size="2">
<p align="center">Vedo con piacere
che ti sei registrato <br>
e
che hai inserito correttamente lo username e la
password</p>
<p><a
href="privata_2.asp">Visualizza la
seconda pagina</a></p></font>
|
Chiudiamo
poi la pagina con end if (if... then... else... end
if )
PRIVATA_2.ASP
Questa
è la seconda pagina 'riservata': anche qui controlliamo
che l'oggetto session. Se non ha il valore corretto,
reindirizziamo l'utente sulla pagina in cui inserire
username e password
|
<%
if session("registrato") <> "sicuro"
then
response.redirect("validate.asp?url=privata_2.asp")
else
%>
<font
face="verdana" size="2">
<p align="center">Visto che funziona?</p>
<p><a
href="privata_1.asp">Torna alla prima
pagina</a></p></font>
<%
end if %>
|
VALIDATE.ASP
Come
potete notare dal codice delle pagina 'privata_1.asp'
e 'privata_2.asp', nel caso in cui l'utente non si sia
ancora autenticato, viene caricata la pagina 'validate.asp',
passandole il parametro 'url' avente, come valore, il
nome della pagina 'protetta'.
Così
facendo la pagina validate.asp è in grado di autenticare
l'utente e ri-caricare la pagina a cui aveva tentato
di accedere: in pratica faremo un 'response.redirect'
sul nome contenuto nella variabile 'url'.
Il
codice della pagina probabilmente risulta più chiaro
delle mie spiegazioni.
Vediamo
innanzitutto il modulo in cui inserire nome utente e
password: tale modulo dovrà richiamare la pagina check.asp
e dovrà contenere due campi di testo a riga singola
(di cui il secondo è un campo 'password'), che chiameremo
'form_user' e 'form_password'. Inseriamo
poi un campo di testo nascosto (che chiamiamo 'form_url')
cha avrà come valore iniziale il valore del parametro
'url': valore che otteniamo mediante la funzione 'request.querystring'.
|
<%
dim
url
url=request.querystring("url")
%>
<form
method="POST" action="check.asp">
<p
align="center">Username<br>
<input
type="text" name="form_user"
size="20"></p>
<p
align="center">Password<br>
<input
type="password" name="form_password"
size="20"></p>
<p
align="center"><input type="submit"
value="Invia" name="B1"><input
type="reset" value="Reimposta"
name="B2"></p>
<input
type="hidden" name="form_url"
value="<% = url %>">
</form>
|
CHECK.ASP
Per la realizzazione di questo file ho preso spunto
dal materiale disponibile sul sito http://www.ligasoft.com
Questo
file si occupa di controllare che lo username e la password
inserite siano presenti nel database 'pass.mdb', in
modo da verificare che l'utente si sia effettivamente
registrato.
Nel
caso in cui il nome utente o la password non corrispondessero,
verrebbe caricata una pagina di errore ('CHECK_OUT.HTM', che altro non è che una pagina html con un testo che
invita l'utente a verificare l'esattezza dei dati inseriti
o, nel caso, a registrarsi mediante la pagina 'ric_reg.htm'
vista in precedenza).
Come
prima cosa preleviamo i dati dal modulo mediante la
solita funzione 'request.form'
|
<%
dim
user
dim
pwd
dim
url
user=replace(request.form("form_user"),"'","''")
pwd=replace(request.form("form_password"),"'","''")
url=request.form("form_url")
|
A
questo punto creiamo la connessione al database 'pass.mdb'
|
Dim
Conn
Set
Conn = Server.CreateObject("ADODB.Connection")
conn.Open
"driver={Microsoft Access Driver (*.mdb)};dbq="
& server.mappath("database/pass.mdb")
Set
rs = Server.CreateObject("ADODB.Recordset")
|
Preparo
poi la stringa di ricerca
|
qry
= "Select * from pass Where ((user='"
qry
= qry & user & "') AND (pwd='"
qry
= qry & pwd & "'));"
|
configuro
il recordset e lo apro eseguendo poi la ricerca nel
database
|
rs.ActiveConnection
= conn
rs.CursorLocation
= 2
rs.Open
qry
|
Controllo
che non rimanga nulla nella cache dell'utente
Nel
caso in cui il nome utente o la password non compaiano
nel database, reindirizziamo l'utente sulla pagina di
errore citata prima ('check_out.htm')
|
if
rs.EOF then
response.redirect("check_out.htm")
|
Se
invece tutto ha funzionato correttamente creiamo l'oggetto
session 'registrato' e gli assegniamo, come valore,
la parola 'sicuro'.
|
else
session("registrato")="sicuro"
|
A
questo punto chiudiamo la connessione e carichiamo la
pagina che l'utente aveva cercato di visualizzare senza
essersi autenticato. Il nome di tale pagina è memorizzato
nella variabile 'url'. Quindi avremo
|
rs.close
set
rs = nothing
conn.close
set
conn = nothing
response.redirect(url)
end
if
%>
|
|