Creazione di un'area di accesso riservato in Asp

Siti dinamici con ASP
Impara a creare siti dinamici professionali con ASP

Scritto da Luca Ruggiero nella sezione Asp

Introduzione

Sulla scorta del Tip Una semplice area di accesso riservato senza DB vediamo in questo più completo Articolo come implementare un reale servizio di protezione di un'area del nostro Sito. In questo caso utilizzeremo un database, per consentire non più ad un solo utente statico, ma ad una serie di utenti registrati, di usufruire di un servizio.

La pagina di Login: login.asp

La logica dell'Applicazione è praticamente identica a quella seguita nel Tip citato in precedenza, solo che si fa riferimento al database database.mdb ed in particolare alla tabella che chiameremo utenti, la quale avrà una serie di campi a scelta e secondo le esigenze dello sviluppatore, tra cui username e password.

Si crei la pagina login.asp, la quale conterrà sia il modulo che il codice Asp per effettuare la connessione alla propria area privata con proprio account-utente; di seguito il codice:

<%@LANGUAGE = JScript%>
<%
    var azione = new String(Request.QueryString("azione"));
%>
<html>
 <head>
  <title>Login</title>
 </head>
<body>

<%
    if (azione == "OK")
    {
        var username = new String(Request.Form("username"));
        var password = new String(Request.Form("password"));
        var username2 = username.replace(/'/g,"''");
        var password2 = password.replace(/'/g,"''");
        var Cn = new ActiveXObject("ADODB.Connection");
            Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("database.mdb"));
        var Sql = "SELECT * FROM utenti WHERE username = '" + username2 + "' AND password = '" + password2 + "'";
        var EseguiLogin = Cn.Execute(Sql);
            if (EseguiLogin.EOF)
            {
                Cn.Close();
                Response.Write("ACCESSO NEGATO");
                Response.End;
            }
            else
            {
                Cn.Close();
                Session("username") = username;
                with (Response)
                {
                      Write("<p align='center'>");
                      Write("Benvenuto " + username + "!<br><br>");
                      Write("Clicca <a href='areaprivata.asp'>qui</a> per entrare!");
                      Write("</p>");
                }

            }
    }
    else
    {
%>
<p align="center">
    <form method="post" action="login.asp?azione=OK">
        Username
        <input type="text" name="username">
        Password
        <input type="password" name="password">
        <input type="submit" value="Login">
    </form>
</p>
<%        
    }
%>

</body>
</html>
La logica seguita è molto semplice: implementiamo la variabile di tipo QueryString azione per controllare lo stato dell'Applicazione, ovvero se l'utente ha eseguito la procedura di login o meno, nel cui caso visualizzerà il modulo.

In seguito recuperiamo Username e Password dal modulo e le confrontiamo nel database grazie alla Query
SELECT * FROM utenti WHERE username = '" + username2 + "' AND password = '" + password2 + "'
cercando l'uguaglianza dei capi username e password all'interno dello stesso record. Se l'operazione è andata a buon fine creiamo una sessione a suo nome
Session("username") = username;
altrimenti neghiamo l'accesso.

Le pagine private

Tenendo sempre come riferimento il Tip citato all'inizio dell'Articolo, vediamo come dovranno apparire le pagine private:
<%@LANGUAGE = JScript%>
<%
    if (Session("username") == null)
    {
        Response.Write("ACCESSO NEGATO");
        Response.End;
    }
    else
    {
        /*
            Ci connettiamo al database e, a seconda dell'Applicazione per cui ci serviamo
            di un'area di accesso riservato, recuperiamo i dati dell'utente loggato basandoci
            sulla sessione che ha generato, ad esempio:

            var Sql = "SELECT * FROM una_tabella WHERE username = '" + Session("username") + "'";
        */
%>
<html>
 <head>
  <title>Login</title>
 </head>
<body>

<p align="center">AREA PRIVATA</p>

</body>
</html>
<%
    }
%>
La pagina di Logout: logout.asp

Per effettuare il Logout sarà sufficiente creare un link verso il file logout.asp che conterrà il seguente codice:
<%@LANGUAGE = JScript%>
<%
    Session.Abandon();
    Response.Write("<p align="center">ARRIVEDERCI</p>");
%>

I più cliccati della sezione Asp

:: Un semplice form mail in Asp (51.682)

:: Creazione di un Guestbook in Asp (50.782)

:: Connessione ad un database MySql con Asp (25.044)

:: Connessione ad un database Microsoft SQL Server con Asp (24.069)

:: Asp e database (23.123)

:: Differenza tra i metodi get e post e recupero dei dati, attraverso Asp (22.301)

:: Una semplice area di accesso riservato senza DB in Asp (21.383)

:: Riscrivere le URL con Asp (19.743)

:: Creazione di un Sondaggio in Asp (19.100)

:: Report di stampa da database a Ms Word con Asp (18.715)

IN EVIDENZA
DOWNLOAD