Accesso ed autenticazione ai database
ACCESSO ED AUTENTICAZIONE AI DATABASE
Qui sotto c'è un semplice form di login che integra lo username e la password. Come potete vedere, questa pagina sottopone il form a sé stessa. Se l'utente non ha ancora sottoposto il form, quest'ultimo viene mostrato, mentre se l'utente sottomette il form con i dati corretti, la pagina redirezione il browser verso l'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 detto
query. I set di record ritornati da un database
sono di questo tipo e vengono definiti
"queries". Il tag
<cfquery> viene usato per inoltrare le
query al database e memorizzare i risultati ritornati in una
variabile 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 le seguenti 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 essere
processata leggendo il valore della variabile
cfquery.executionTime.
L'esempio seguente è molto simile a quello precedente, ad eccezione che i valori corretti per lo username e la password non sono più all'interno del codice ma vengono confrontati con quelli presenti nel database:
<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> per controllare l'esistenza di un record e per inserire un nuovo record. Viene usata spesso anche per selezionare un gruppo di record, detto anche recordset, e stamparli in outout nella pagina web. Il modo più comune per stampare in output i dati è usare il tag <cfoutput> con i suoi attributi di query settati in modo tale da essere rilevanti per la query. L'esempio seguente 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 database per inserire e selezionare dati e a sfruttare tale abilità per creare form di registrazione e di login. Sfortunatamente, per come sono scritte ora, solo le pagine stesse sono protette: per proteggere l'intero sito in questa maniera dovremmo forzare assurdamente l'utente a loggarsi in ogni pagina. Qui entrano in gioco le sessioni e i cookie, oggetto di future lezioni.
- Articolo precedente Liste ed array (Parte II)
- Articolo successivo Riuso del codice e sviluppo di funzioni
Ti potrebbe interessare anche
commenta la notizia
Chiedi alla nostra Redazione!