Aplicación WAP: parte I
Ejemplo de aplicación: Consulta de valores de la bolsa
La aplicación de ejemplo permite al usuario realizar el mantenimiento y la consulta de su cartera de valores de bolsa. Para ello se utiliza una base de datos (formato access .mdb) en la que se contemplan las tablas con las relaciones siguientes.
Entre las operaciones disponibles en la aplicación figuran la consulta de los valores de la cartera del usuario, así como la compra y venta de valores.
Una característica común en todas las páginas es la identificación del tipo de información que el servidor web está enviando en este caso al servidor WAP. ASP permite esta identificación mediante la instrucción
<% Response.ContentType = "text/vnd.wap.wml" %>
Deberán considerarse funcionalidades no se han tratado como controles de los formularios de entrada de datos o errores de acceso a la base de datos.
Acceso y autentificación
En la página inicial del sistema (default.asp) se visualizan los campos de login o identificación del usuario (en este caso el dni y un password).
Página: default.asp
<%
Response.ContentType = "text/vnd.wap.wml"
' se inicializa la variable de sesión con un valor cualquiera
' para controlar el fin de sesion
session("DNI")="acme" %>
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="login" title="Móvil-bank">
<p>
Bienvenido<br/>
DNI: <input type="text" name="dni" maxlength="8"/>
Password:<input type="password" name="password" maxlength="8"/>
<do type="accept" label="Aceptar">
<go method="post" href="procesarlogin.asp"/>
</do>
</p>
</card>
</wml>
Cuando el usuario haya introducido su identificación se envia al servidor la petición de la página "procesarlogin.asp" que comprobará la existencia del usuario en la BD. En caso afirmativo se muestra el enlace a la página del menú y en caso contrario se muestra un mensaje de usuario no autorizado.
Página: Procesar login
<% Response.buffer = true %>
<%Response.ContentType = "text/vnd.wap.wml" %>
<!--#include file="bd_init.asp" -->
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
"http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<%
Dim strSQL
Dim cnn1
Dim rs
Call CrearConexion()
strSQL = "SELECT * FROM Cliente WHERE IdCliente='" & request.form("DNI")
& "' AND password='" & request.form("password") & "'"
rs.Open strSQL, cnn1
if rs.EOF then %>
<card id="login" title="Móvil-bank">
<p>
Datos incorrectos. Vuélvelo a intentar <br/>
<do type="prev" name="anterior" label="Anterior">
<prev/>
</do>
</p>
</card>
<% else %>
<card id="home" title="Móvil-bank">
<p>
Hola <%=rs("nombre")%> !
<anchor>
Menú <go href="menu.asp"/>
</anchor>
</p>
</card>
<%
' Inicialización de las variables de sesión
Session("DNI") = request.form("DNI")
end if
rs.Close
cnn1.Close
%>
</wml>
Include de conexión a BD y mantenimiento de la sesión
En la página anterior así como en todas las siguientes, se utiliza la técnica de incluir el archivo bd_init.asp que verifica la validez de la sesión e inicializa los objetos de acceso a base de datos que utilizan las páginas (connection y recordset).
En caso de que la sesión haya finalizado (típicamente por inactividad del cliente) se redirecciona de nuevo la página de inicio de la aplicación "default.asp"
Se utiliza el acceso mediante dsn por lo que deberá crearse el correspondiente origen de datos ODBC de tipo Access a la base de datos bolsa.mdb con el nombre "wapbolsa".
Página: db_init.asp
<%
Sub CrearConexion
Dim strCnn
' Comprobar que la sesión está activa
if session("DNI")= "" then
response.clear
response.redirect "default.asp"
response.end
end if
' Abrir la conexión
strCnn = "DSN=wapBolsa"
Set cnn1 = Server.CreateObject("ADODB.Connection")
cnn1.Open strCnn
'Inicialización del objeto Recordset
Set rs = Server.CreateObject("ADODB.Recordset")
End sub
%>