|
|
|
|
|

|
Cosa manca in questo portale |
|
|
|
|
|
|

|
LOGIN |
|
|
|
|
|
|
|
|
|
|
Data : 13-03-2003 |
Autore : Luca Ruggiero |
Tipo : Articolo | Settore : asp |
Titolo : Oggetto Session |
|
Si ringrazia LUKEONWEB per la gentile concessione dell'articolo
L'oggetto built-in Session è talvolta indispensabile nell'ambito delle applicazioni Asp per la gestione di informazioni relative agli utenti; il suo scopo, infatti, è quello di memorizzare informazioni in un file e consentire al server Web di trasportarle in pagine diverse da quella in cui sono state inizializzate.
Iniziamo con un semplice esempio, memorizziamo in una sessione una stringa di testo, consideriamo il seguente codice:
<%@LANGUAGE = JScript%>
<%
Session("esempio") = "Hello World!";
%>
<html>
<head>
<title>Oggetto Session</title>
</head>
<body>
<%
Response.Write(Session("esempio"));
%>
</body>
</html>
E' normale immaginare che il risultato di un simile esperimento sia la stampa a video della stringa "Hello World!".
Proviamo adesso da aggiungere un link a questo codice che punti ad un'altra pagina, in cui scriveremo
<%@LANGUAGE = JScript%>
<html>
<head>
<title>Oggetto Session</title>
</head>
<body>
<%
Response.Write(Session("esempio"));
%>
</body>
</html>
Anche in questo caso, nella seconda pagina, comparirà la scritta "Hello World!".
Proviamo adesso a chiudere la pagina ed a riaprirla: probabilmente la scritta "Hello World!" sarà ancora visibile, questo perchè, probabilmente il server Web non ha ancora distrutto la sessione, conservandola in una particolare area di memoria.
Ad un riavvio del server, o del sistema, aprendo il secondo file non dovrebbe apparire nulla, oppure la scritta undefined, ciò vuol dire che la sessione è stata distrutta.
Asp offre la possibilità di distruggere la sessione manualmente; il metodo Abandon() consente di terminare all'istante la sessione, questa è la tecnica con cui vengono costruite le pagine di logout per gli utenti; la proprietà Timeout, invece, consente di specificare in minuti il tempo che dovrà trascorrere prima che la sessione venga distrutta.
Solitamente una sessione muore dopo 20 minuti di inattività dell'utente, cioè prima che venga inviata al server una nuova richiesta http.
Scrivendo
Session.Timeout = 30;
modificheremo il tempo di scadenza della sessione da 20 minuti a mezzora.
Un esempio pratico: un'area di accesso riservato
La maniera più spicciola di mettere in pratica quanto detto è la realizzazione di una semplice area di accesso riservato... di solito il nome utente e la password vengono estratti da un database: non essendo ancora giunti a questo punto, ci limiteremo a memorizzare in delle semplici variabili una coppia di valori che serviranno ad un singolo utente a loggarsi.
Utilizzeremo un semplice modulo Html per permettere il login, immaginiamo di essere i soli sul nostro sito ad avere accesso a determinate informazioni contenute in determinate pagine; creiamo all'interno della cartella privata il file index.asp:
<%@LANGUAGE = JScript%>
<html>
<head>
<title>Area privata</title>
</head>
<body>
<form method="post" action="login.asp">
Username<br>
<input type="text" name="username"><br>
Password<br>
<input type="password" name="password"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
Passo secondo, inviamo il modulo al file login.asp, utilizzeremo come username admin, e come password prova:
<%@LANGUAGE = JScript%>
<%
// RECUPERO I DATI DAL MODULO
var username = new String(Request.Form("username"));
var password = new String(Request.Form("password"));
// QUI SPECIFICO LA USERNAME E LA PASSWORD
if ((username != "admin") || (password != "prova")) {
Response.Write("ACCESSO NEGATO");
Response.End;
}
else {
// CREO LA SESSIONE ATTRIBUENDOLE IL VALORE DELL'UTENTE LOGGATO
// IN QUESTO CASO SI TRATTA DI UN UTENTE STATICO, MA LA TECNICA E' QUESTA
Session("username") = username;
Response.Redirect("privata.asp");
}
%>
Il file privata.asp è considerabile come la reale Homepage dell'area riservata:
<%@LANGUAGE = JScript%>
<%
if (Session("username") == null) {
Response.Write("ACCESSO NEGATO");
Response.End;
}
%>
<html>
<head>
<title>Area privata</title>
</head>
<body>
... CONTENUTO DELL'AREA PRIVATA ... ... ...
<a href="logout.asp">LOGOUT</a>
</body>
</html>
Tutti i file facenti parte dell'area riservata devono contenere il codice evidenziato in rosso prima di qualsiasi Tag Html, in modo da inibire l'accesso qualora la sessione fosse nulla; supponiamo che da questa pagina fosse possibile anche effettuare il logout, creiamo quindi un link verso il file logout.asp:
<%@LANGUAGE = JScript%>
<%
Session.Abandon();
%>
<html>
<head>
<title>Area privata</title>
</head>
<body>
<div align="center">ARRIVEDERCI!!!</div>
</body>
</html>
Con questo semplice e funzionale esempio di area di accesso riservato si conclude la decima lezione di questo manuale, oggetto della prossima lezione è l'ultimo degli oggetti built-in di Asp: Application. |
|

|
|