Adesso che abbiamo imparato a usare un database dal Web e sappiamo costruire pagine che ci danno accesso a tutti i nostri dati non dobbiamo più essere in ufficio per lavorare. Volendo, possiamo rimanere a letto e con il portatile continuare a mantenere il sito in tutta tranquillità.
Però... prima bisogna creare un'area privata sul nostro sito altrimenti chiunque sapesse l'URL potrebbe modificare il nostro database attraverso le nostre pagine. Un grosso NO, NO. Il database è il nostro tesoro. Prima di rimanere a letto sarà meglio che creiamo una Login con una password in modo da essere al sicuro proprio come Ali Baba dentro la sua caverna.
Cosa si fa? Di sicuro hai già una buona idea su come procedere. Io di solito faccio così:
Nel global.asa metto:
<%
Sub Session_OnStart
Session("login") = False
End Sub
%>
Ok, così quando vieni nella pagine la variabile mi dice che tu non sei autorizzato. Quindi in ognuna delle mie pagine che voglio mantenere private, in cima, prima che succeda niente, controllo per vedere se il mio cliente ha l'autorizzazione.
<%
If Session("login") then
'fai tutto quello che la tua pagina deve fare
else
'Mi dispiace ma qui non ci puoi entrare
end if
%>
Siccome tutte le mie pagine adoperano due include, una per la testa della pagina e una per la coda, di solito questa parte del codice risiede lì.
Allora con questo sistema non possono entrare ma sfortunatamente non possiamo entrare neanche noi ;o)
Quindi creiamo subito una tabella nel nostro database chiamandola tbl_login. Qui ci mettiamo:
tbl_login | |
Nome campo | Tipo campo |
Id | primary key |
Nome | Text |
Cognome | Text |
Login | Text |
Password | Text |
e adesso scriviamo il programma Login.asp.
Da ora in poi non strutturerò più il codice in quanto i programmi sono un po' troppo corti per farlo. Lo puoi far tu se vuoi, è una buona abitudine da prendere.
Siccome abbiamo già messo la nostra variabile Login nella global.asa, quando entriamo nel sito per la prima volta è già inizializzata come:
login = false
La logica, come sempre, è
Se clickato
fai quello che devi fare
se no
mostra la form
<%
Option Explicit
'--------------------------------------------------------
'Purpose: Login
'Date: 07 April 2001
'Commenti:
'--------------------------------------------------------
Response.Buffer = True
Dim objConn, strConn, objRs, strsql
Dim submitted, login, password
%>
<html>
<head>
<title>Login</title>
</head>
<body bgcolor=powderblue>
<%
submitted = Request.Querystring("submitted")
If Submitted then
strConn = Application("dbconn")
login = Request.Form("login")
password = Request.Form("password")
strsql = "Select id, login, password FROM tbl_login "
strsql = strsql & "WHERE login ='" & login & "' AND password = '" & password & "'"
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConn
set objRs = objConn.Execute(strsql)
If objRs.EOF then
'Non è valido, mandalo indietro
response.redirect "login.asp"
Else
'è valido, fallo entrare
session("login") = True
objRs.close
Set objRs = Nothing
response.redirect "ufficio.asp"
end if
else
'mostra la form
%>
<div align="center">
<form action="login.asp?submitted=true" method="post">
<table align="center" cellspacing="0" cellpadding="5" border="1" bordercolor="midnightblue" bgcolor="ivory" width="400">
<tr>
<th><font color=firebrick size=+2><b>Solo chi voglio io!</b></font></th>
</tr>
<tr>
<td align="center" bgcolor="azure">
<%
if session("login") and Submitted then
response.redirect "login.asp"
else
response.write "<br><br> Per favore, inserisci login/password. <br><br>"
end if
%>
<table>
<tr>
<td class=event>Login:</td>
<td><input type="text" name="Login" size="10" maxlength="30"></td>
</tr>
<tr>
<td class=event>Password:</td>
<td><input type="password" name="Password" size="10" maxlength="12"></td>
</tr>
</table>
<br>
<input type="submit" value="Submit">
<input type="reset" value="Cancel" Onclick="Javascript:history.go(-1)">
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
<%
end if
Response.end
Response.Clear
%>
I dati della form sono entrati in una query al database e se il recordset è vuoto vuol dire che non abbiamo trovato una valida combinazione di login/password quindi rimandiamo al login.asp per riprovare.
Qui potresti contare fino a 3 per esempio e poi far scomparire il login.
Se il recordset contiene dati, vuol dire che la combinazione esiste e quindi:
<% Session("login") = true %>
che ci permette di entrare dentro al nostro sito in un area che controlliamo solo noi.
Se tu volessi adoperare questa tecnica per fare entrare i tuoi clienti in un area privata sarebbe comodo mantenere informazioni sul tuo utente. Informazioni che ti possono servire per comunicare con esso durante il tempo che spende con te nel tuo sito. Siccome abbiamo guardato al suo record tanto vale che teniamo le informazioni. Cose come:
<%
Session("id") = objRs("id")
Session("nome") = objRs("nome")
%>