Avevamo terminato la precedente lezione inviando alla pagina "vlogin.asp" le informazioni della userid e della password dell'utente in questa forma:
<submit next="vlogin.asp" method="get" namelist="loginname loginpw"/>
Ora pensiamo a come ricevere le informazioni inviate e fare una query sul database:
<% @Language=VBScript %>
<!--#include file="conessione.asp"-->
<%
strSQL = "SELECT * FROM Users WHERE Pwd='" & Request("loginpw") & "' AND UserID ='" & request.querystring("loginname")& "'"
set rsUsr = conn.Execute (strSQL)
If rsUsr.EOF AND rsUsr.BOF Then
'Utente non valido
Session("Logged") = False
Else
Session("Name") = rsUsr("Name")
Session("Logged") = true
End If
rsUsr.Close
set srUsr = Nothing
%>
<!--#include file="close_connessione.asp"-->
Dopo aver aperto una connessione con il db nel file connessione.asp, che non esaminiamo in quanto esula dalle finalità del nostro corso, eseguiamo una query sul database per vedere se esistono corrispondenze con i dati raccolti dai form voicexml dal file "login.asp".
Alla fine chiudiamo la connessione importando il file close_connessione.asp.
Se il risultato della nostra query è positivo impostiamo la variabile di sessione "logged" come true, altrimenti come false.
Creiamo i prompt per dire all'utente se è autenticato o meno. Per farlo il codice è simile a quello usato nella precedente lezione:
<%@ Language=VBScript %>
<!--#include file="conessione.asp"-->
<%
Response.ContentType = "text/xml"
Response.Write("<?xml version= ""1.0"" encoding=""ISO-8859-1""?>")
%>
<vxml version="2.0">
<%
strSQL = "SELECT * FROM Users WHERE Pwd = '" & Request("loginpw") & "' AND UserID = '" & Request.querystring("loginname")& "'"
set rsUsr = conn.Execute (strSQL)
%>
<form id="welcome">
<block>
<prompt>
<%
If rsUsr.EOF AND rsUsr.BOF Then
'Utente non valido
Session("Logged") = False
%>
Ciao <%=rsUsr("Nome")%>, ora puoi accedere ai tuoi servizi personalizzati
</prompt>
</block>
<%
Else
Session("Name") = rsUsr("Name")
Session("Logged") = true
%>
Spiacente i dati da te forniti non sono validi.
</prompt>
</block>
<%
End If
%>
</form>
<%
rsUsr.Close
set srUsr = nothing
%>
</vxml>
<!--#include file="close_connessione.asp"-->
In questo caso abbiamo generato un messaggio di errore, in caso di autenticazione fallita, ed un messaggio contenente il nome dell'utente preso dal database.
Ovviamente in entrambi i casi possiamo spostare il flusso dell'applicazione ad un altro file ASP, attraverso il redirect, o VoiceXML, utilizzando i tag "goto" o "sumbit".
Questo piccolo esempio può essere ampliato inserendo nel database ulteriori informazioni dell'utente, come per esempio le sue preferenze per l'interfaccia vocale; oppure, ancora è possibile utilizzare il dato del numero di telefono dell'utente per riconoscerlo e velocizzarne l'autenticazione.