Christian Castelli
a- a+

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>

 

<a href="/img/22/iframe_CF_database1.html" title="Vedi esempio">Vedi codice</a>;

 


<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à di query

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>

 

<a href="/img/22/iframe_CF_database2.html" title="Vedi esempio">Vedi codice</a>;

 

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.



Ti potrebbe interessare anche

commenta la notizia