Accesso ed autenticazione ai database
ACCESSO ED AUTENTICAZIONE AIDATABASE
Qui sotto c'è un semplice form di login cheintegra lo username e la password. Come potete vedere, questapagina sottopone il form a sé stessa. Se l'utentenon ha ancora sottoposto il form, quest'ultimo vienemostrato, mentre se l'utente sottomette il form con idati corretti, la pagina redirezione il browser versol'home page.
Es.1: Login-noDB.cfm
<cfif isDefined("FORM.submitted")> <cfif FORM.email EQ "guest@webmasterpoint.org" AND password EQ "password"> <cflocation url="index.cfm" addtoken="no"> </cfif></cfif> <cfparam name="FORM.email" default=""> <html> <head> <title>Pagina di autenticazione</title> </head> <body> <h2>Log in</h2> <cfoutput> <form method="post" action="#CGI.SCRIPT_NAME#"> </cfoutput> <input type="hidden" name="submitted" value="true"> <table> <tr> <td>Email:</td> <td><input type="text" name="email" value="<cfoutput>#FORM.email#</cfoutput>" size="40"></td> </tr> <tr> <td>Password:</td> <td> <input type="password" name="password" size="14"> </td> </tr> <tr> <td align="right" colspan="2"> <input type="submit" value="Log in"> </td> </tr> <tr> <td colspan="2"> <br><a href="Register.cfm">Registrati</a> </td> </tr> </table> </form> </body> </html>
<cfquery>
ColdFusion ha uno speciale tipologia di dato dettoquery
. I set di record ritornati da un databasesono di questo tipo e vengono definiti"queries". Il tag<cfquery>
viene usato per inoltrare lequery al database e memorizzare i risultati ritornati in unavariabile di tipo query
.
Qui sotto potete trovare una lista degli attributi del tag<cfquery>
:
-
name
: nome della query; -
datasource
: nome della sorgente dei dati; -
dbtype
: l'unico valore possibile è "query
". Viene usato con le query delle queries. -
username
: ridefinisce lo username specificato in ColdFusion Administrator; -
password
: ridefinisce la password specificata in ColdFusion Administrator; -
maxrows
: il numero massimo di righe ritornabili in un set di record; -
blockfactor
: il numero massimo di righe ritornabili contemporanemanete dal server; -
timeout
: numero di secondi entro i quali viene concessa l'esecuzione di una query. Allo scadere del timeout viene generato un errore; -
cachedafter
: data che specifica quando cancellare la query dalla cache; -
cachedwithin
: tempo di permanenza della query nella cache; -
debug
: specifica se attivare o meno la modalità di debugging.
L'oggetto di tipo query creato da questo tag ha leseguenti proprietà mostrate in tabella:
Proprietà | Descrizione |
---|---|
currentRow | record corrente della query processata |
columnList | lista dei nomi delle colonne, separati da una virgola |
recordCount | Numero di record ritornate da una query |
executionTime | tempo necessario per eseguire una query |
Potete calcolare quanto tempo impiega una query ad essereprocessata leggendo il valore della variabilecfquery.executionTime
.
L'esempio seguente è molto simile a quelloprecedente, ad eccezione che i valori corretti per lousername e la password non sono più all'internodel codice ma vengono confrontati con quelli presenti neldatabase:
<cfif isDefined("FORM.submitted")> <cfquery name="logincheck" datasource="runners"> SELECT FirstName, LastName, Email FROM Users WHERE email='#FORM.email#' AND password='#FORM.password#' </cfquery> <cfif logincheck.RecordCount> <cflocation url="index.cfm" addtoken="no"> </cfif> </cfif> ---- Codice omesso ----
Stampare in output dati prelevati dal database
In questo contesto si è usato <cfquery> percontrollare l'esistenza di un record e per inserire unnuovo record. Viene usata spesso anche per selezionare ungruppo di record, detto anche recordset, e stamparliin outout nella pagina web. Il modo più comune perstampare in output i dati è usare il tag<cfoutput> con i suoi attributi di query settati inmodo tale da essere rilevanti per la query. L'esempioseguente illustra quanto detto.
Es.2: cfoutput.cfm
<cfquery name="getUsers" datasource="#APPLICATION.datasource#"> SELECT firstname, lastname, email FROM Users</cfquery> <html> <head> <title>Uso di cfoutput</title> </head> <body> <ul> <cfoutput query="getUsers"> <li>#firstname# #lastname# (#email#)</li> </cfoutput> </ul> </body></html>
L'output di questa pagina è mostrato qui sotto:
- nome cognome (utente1@email.com)
- nome cognome (utente2@email.com)
- ...
Conclusioni
In questa lezione avete imparato a connettervi al databaseper inserire e selezionare dati e a sfruttare taleabilità per creare form di registrazione e di login.Sfortunatamente, per come sono scritte ora, solo le paginestesse sono protette: per proteggere l'intero sito inquesta maniera dovremmo forzare assurdamente l'utente aloggarsi in ogni pagina. Qui entrano in gioco le sessioni e icookie, oggetto di future lezioni.
- Articolo precedente Liste ed array (Parte II)
- Articolo successivo Riuso del codice e sviluppo di funzioni