Lezione 2. Leggere i dati da un database. Christian Lacetera |
|
<!-- INIZIO LEZIONE --!>
Nell'esempio precedente abbiamo mostrato com'� semplice integrare il codice del PHP con il VoiceXML.
<!-- FINE LEZIONE --!>
L'uso di un linguaggio server side quale il PHP sembrerebbe pero' non essere giustificato, perch� nelle applicazioni vocali disponiamo gi� del JavaScript che ci permette di interagire all'interno del documento. JavaScript non ci permette pero' di leggere o scrivere da un database. Questo il motivo per cui si utilizza un linguaggio di scripting quale il PHP in grado di generare pagine dinamiche, una modalit� questa ben conosciuta da molti webmaster. login.php <?php header("Content-type: application/voicexml+xml"); $connection = mysql_connect("localhost", "utenza", "password"); mysql_select_db("database"); $result = mysql_query("SELECT username,name FROM VIUG_USERS WHERE pin = '" . $_POST["pin"] . "'"); if (mysql_num_rows($result) > 0) { $rs = mysql_fetch_assoc($result); $auth="yes"; } else{ $auth="no"; } ?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"> <var auth="'<?php =$auth;?>'"> <form id="main"> <if cond="auth='yes'"> <goto src="#login"> <else/> <goto src='#nologin'> </if> </form> <form id="login"> <block> <prompt> Benvenuto <?php =rs['name']: ?> ora puoi accedere alla tua pagina personale </prompt> <goto src="personal.php"> </block> </form> <form id="login"> <block> <prompt> Mi dispiace il codice inserito non � valido </prompt> <goto src="index.php"> </block> </form> </vxml> Come l'esempio della prima Lezione (index.php) defininiamo i content type appropriato e scriviamo l'intestazione per il documento XML. Dopo aver fatto tutto ci�, possiamo, attraverso le funzioni intergrate del PHP, leggere i dati da un database in questo caso MySQL e memorizzarle dentro delle variabili. In questo esempio si � scelto di gestire all'interno dello stesso documento sia l'autenticazione andata a buon fine che quella errata, in modo di mostrare la possibilit� di integrazione tra logica del codice e VoiceXML, nulla vietava ad un utente pi� smaliziato di utilizzare un header http per il redirezionamento in base alla situazione: <?php $connection = mysql_connect("localhost", "utenza", "password"); mysql_select_db("database"); $result = mysql_query("SELECT username,name FROM VIUG_USERS WHERE pin = '" . $_POST["pin"] . "'"); if (mysql_num_rows($result) > 0) { header('Location: login_ok.php'); } else{ header('Location: login_ko.php'); } ?> Questo perch� l'interprete VoiceXML si comporta come un browser e segue le specifiche per le richieste HTTP. Tornando all'esempio, si vede che viene definita una variabile chiamata "auth" nel documento VoiceXML e attraverso il tag <if> viene scelto quale form eseguire. Spesso in situazioni reali � consigliabile usare uno stesso documento per gestire le diverse situazioni, e utilizzare delle chiamate a subdocumenti per analizzare le risposte. Cio' e' possibile attraverso il tag <submit> che permette di eseguire un post ad un subdocumento e di ritornare in maniera automatica al form di partenza senza doverlo ricaricare.
|
|