Perizie Informatiche
Per sapere di piu' sul WAP PRIMA LEGGI QUESTO !
COSTRUIRE UN SITO CON WML ED ASP
In questo articolo diamo per scontato che si conosca già il linguaggio ASP (Active Server Pages) e un po' di WML (Wireless Markup Language) ed il protocollo WAP (Wireless Application Protocol).
Troppo ? No, niente paura in verità l'unica cosa che bisogna conoscere un po' meglio è l'ASP, per il resto vedremo che non è niente di esoterico da capire e da realizzare.
Qui vedremo due listati uno e' di un form di ricerca che appare sul dispositivo WAP compatibile (es. Nokia 7110) da compilare e che passa i dati ad un file ASP che li elabora e poi invia un output (sempre sul display del GSM) in WML così da poterlo visionare.
Simuliamo la costruzione di un sito che permetta di cercare dei libri per TITOLO e per CASA EDITRICE.
Cominciamo col file default.asp:
DEFAULT.ASP:
Il file inizia con il Response.ContentType perché dobbiamo settare un nuovo tipo di MIME il text/vnd.wap.wml per la trasmissione di dati in WML.
<%
Response.ContentType = "text/vnd.wap.wml"
La routine che segue l'ho creata appositamente perché mi sono accorto che se qualcuno vuole provare a navigare un sito in WML con i browser per HTML (Internet Explorer o Netscape), questi gli permettono di "salvare" il file, perché non ne riconoscono il formato, insomma come quando si clicca per fare il download di un file, a quel punto chiunque può "sgarffignare" il vostro prezioso codice. Ma questa routine riconosce se il browser che si sta usando è il Nestcape o l'Explorer e in caso affermativo effettua una redirezione su un sito web in html.
brow=request.servervariables("HTTP_USER_AGENT")
k = InStr(brow, "Mozilla")
If k > 0 Then
strbuff = Mid(brow, 1, k - 1)
lun_str = Len(brow)
For k1 = k To lun_str
car = Mid(brow, k1, 7)
If car = "Mozilla" Then response.redirect "http://www.giroscopio.com"
Next
End If
%>
<?xml version="1.0"?>
<wml>
Dopi i tag standard per creare la pagina WML ecco che creiamo la prima "card", ossia la scheda che è visualizzata sul display.
<card id="ricerc" title="Ricerca">
<p>
Titolo: <input name="titolo" title="titolo:"/><br/>
Abbiamo un'etichetta "Titolo:" ed un elemento di input che sarebbe una box di testo, chiamata "titolo", nella quale adremo a scrivere un titolo di un libro.
In seguito abbaimo una menu a tendina, chiamato "selez", dal quale possiamo selezionare due case editrici.
Casa Editrice:
<select name="selez" title="Editrice" value="editrice">
<option value="seleziona">-----</option>
<option value="Feltrinelli">Feltrinelli</option>
<option value="Mondadori">Mondadori</option>
</select><br/>
Infine creiamo il tasto "CERCA" che una volta cliccato, tramite il tag <go href="…. ci porta al sito (fittizio)http://www.provawml.com/wap e chiama il file lista.asp passandogli le variabili su linea di comando.
Le variabili selez e tit prendono rispettivamente i valori contenuti nelle variabili WML "selez" e "titolo", il codice "&" rappresenta la "&" che in WML è un carattere "proibito", però ci serve per comporre la querystring che sarà letta dal file lista.asp.
<do type="accept" label="Cerca">
<go href="http://www.provawml.com/wap/lista.asp?selez=$(selez)&tit=$(titolo) "/>
</do>
</p>
</card>
</wml>
LISTA.ASP
<%
Response.ContentType = "text/vnd.wap.wml"
brow=request.servervariables("HTTP_USER_AGENT")
k = InStr(brow, "Mozilla")
If k > 0 Then
strbuff = Mid(brow, 1, k - 1)
lun_str = Len(brow)
For k1 = k To lun_str
car = Mid(brow, k1, 7)
If car = "Mozilla" Then response.redirect "http://www.giroscopio.com"
Next
End If
%>
<?xml version="1.0"?>
<wml>
<%
Qui il c'è la lettura delle variabili selez e tit prese dalla querystring.
selez2=request.querystring("selez")
tit2=request.querystring("tit")
In seguito si costruisce la query SQL e si connette il database in presente sul server.
sql="select * from libri where titolo like '"&tit2&"' and selez like '"&selez&"'"
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("/biblioteca.mdb")
Set RS=OBJdbConnection.Execute(sql)
%>
Ora si costruisce la card di output in WML, inserendo opportunamente i tag ASP (<% e %>) quando servono per l'estrazione dei campi dai records del database.
<card id="lista" title="lista">
<p>
<%
if not rs.eof then
%>
<table columns="2">
<%
Do while NOT RS.EOF
%>
<tr>
<td>
<%=rs("autore")%>
</td>
<td>
<%=rs("titolo")%>
</td>
<td>
<%=rs("editrice")%>
</td>
<td>
<%=rs("data")%>
</td>
</tr>
<%
RS.MoveNext
Loop%>
</table>
<% else%>
Nessuno trovato !
<%
end if
RS.Close
OBJdbConnection.Close%>
<do type="accept" label="Indietro">
<go href="http://www.provawml.com/wap/default.asp"/>
</do>
</p>
</card>
</wml>
Concludendo se si sa già programmare in ASP basta soltanto modificare l'output fatto dai tag HTML con i tag WML, chiaramente questo discorso vale anche per chi usa il PERL o il PHP, l'importante è che l'interfaccia utente (input ed output) sia in WML altrimenti il telefonino non visualizzerà alcunchè…oppure….aspettate l'UMTS…ma questa è un'altra storia.
________________________________________________________
Sito WAP http://www.giroscopio.com/wap.