Come gestire gli utenti con Access e il linguaggio asp

Precisamente, nel nostro articolo vedremo come è possibile realizzare da zero:
- un pannello per la registrazione di nuovi utenti
- un sistema di login e di gestione dei privilegi dei vari utenti
- un sitema per l'amministrazione degli utenti
Per prima cosa apriamo MS Access e creiamo un DB vuoto chiamato "utenti_sito.mdb"; poi creiamo una tabella che chiamiamo UTENTI con una struttura come da immagine:
Il campo "ID" è contatore, "email", "user" e "pass" sono testo, mentre "stato" è un campo tipo Si/No.
Ora che abbiamo il nostro DB possiamo iniziare a lavorare con il codice... per prima cosa buttiamo giù il codice del sistema di registrazione!
Aprite il bocco note e scrivete come di seguito:
<% 'Creo la variabile Action Dim Action Action = request.form("act") 'Se Action è vuoto stampo il modulo if Action = "" then %> <form method="POST"> <input type="hidden" name="act" value="salva"> <table border="0"> <tr><td>Tua Email</td><td><input type="text" name="email" size="30"></td></tr> <tr><td>Username</td><td><input type="text" name="user" size="30"></td></tr> <tr><td>Password</td><td><input type="password" name="pass" size="30"></td></tr> <tr><td colspan="2"><input type="submit" value="ISCRIVITI"></td></tr> </table> </form> <% 'Se Action ha come valore "salva"... 'Inserisco i valori del modulo nel DB elseif Action = "salva" then 'Apro la connessione al DB Dim Conn Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&_ Server.MapPath("utenti_sito.mdb") 'Aggiungo un nuovo record al DB Dim Rs Set Rs = Server.CreateObject("ADODB.Recordset") Rs.Open "UTENTI", conn, 1, 3 Rs.AddNew() Rs("email") = request.form("email") Rs("user") = request.form("user") Rs("pass") = request.form("pass") Rs("stato") = False Rs.Update 'chiudo recordset e connessione Rs.Close set Rs = Nothing Conn.Close set Conn = Nothing 'Messaggio a video di conferma response.write "Registrazione avvenuta con successo" response.end end if %>Salvate come "registrati.asp" e caricate il file nel vostro server. Lanciatelo e testatelo.
Il codice, come al solito, è ampiamente comentato e non dovrebbe esere un problema per Voi capirne il funzionamnto ed apportare le modifiche che eventualmente riterrete opportune.
L'unica cosa che voglio farvi notare è che di default abbiamo impostato su False il campo "stato" che è quello che ci consente di verificare se l'utente è abilitato (True) o meno (False) all'accesso all'area privata.
Una volta registrato, quindi, l'utente NON è ancora abilitato a navigare nell'area protetta (il campo "stato" è settato su False) fino a quando l'amministratore non lo avrà confermato (settando in True il campo "stato").
Vediamo quindi come realizzare il nostro piccolo pannello di amministrazione per la gestione delle registrazioni. Ecco il codice:
<% 'Imposto una password per accedere al file... 'ricordatevi di cambiarla :-) Dim AdminPass AdminPass = "123456" 'Recupero il valore della querystring pass... Dim MyPass MyPass = request.querystring("pass") 'Verifico che MyPass sia uguale ad AdminPass 'In caso contrario stampo un errore... if NOT MyPass = AdminPass then response.write "Accesso NON autorizzato" response.end end if 'Se l'accesso è autorizzato proseguo... 'Apro la connessione al DB Dim Conn Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&_ Server.MapPath("utenti_sito.mdb") 'Creo la variabile Action Dim Action Action = request.querystring("act") if Action = "" then 'Imposto la query ed apro il recordset Dim Query, Rs Query = "select * from UTENTI order by ID desc" Set Rs = Server.CreateObject("ADODB.Recordset") Rs.Open Query, Conn, 3, 3 'Se il recordset NON è vuoto... if NOT rs.EOF Then response.write "<table border=""1"">" 'Imposto un ciclo do While per scorrere il recordset Do While NOT Rs.EOF response.write "<tr><td>" & Rs("user") & "</td>" response.write "<td><a href=""admin.asp?pass=" & MyPass & "&act=attiva&id=" & Rs("id") & """>Attiva</a> - " response.write "<a href=""admin.asp?pass=" & MyPass & "&act=disattiva&id=" & Rs("id") & """>Disattiva</a></td></tr>" Rs.MoveNext Loop response.write "</table>" 'Se il recordset è vuoto stampo un mesaggio else response.write "Nessun utente iscritto" response.end end if 'chiudo il recordset Rs.Close set Rs = Nothing 'Se action è su attiva... elseif Action = "attiva" then Conn.Execute "update UTENTI set stato = True where id = " & request("id") 'Se invece è su disattiva elseif Action = "disattiva" then Conn.Execute "update UTENTI set stato = False where id = " & request("id") end if 'Chiudo la connessione al DB Conn.Close Set Conn= Nothing %>Salvo tutto come "admin.asp", carico sul server e testo lanciando il file in questo modo:
http://www.miosito.com/admin.asp?pass=123456Relativamente allo script "admin.asp" credo non ci sia proprio poco da dire:
- abbiamo aperto la connessione al nostro DB poi abbiamo costruito una serie di condizioni
- se Action è vuoto stampo a video tutti i record presenti nel DB accompagnati dai relativi ink per attivazione/disattivazione;
- se invece Action ha valore "attiva" o "disattiva" eseguo una query che non fa altro che modificare il valore del campo "stato" del DB da False a True e viceversa;
- alla fine abbiamo chiuso, come al solito, la nostra connessione al DB per liberare un po' di risorse;
fonte: http://www.mrwebmaster.it/asp/articoli/sistema-gestione-utenti-acceso-aree-protette-1a-parte_177.html
Commenti
Posta un commento