Christian Castelli
a- a+

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>

 

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

 


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

 

<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 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.



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Redazione
Ti interessano altri articoli su questo argomento?
Chiedi alla nostra Redazione!