Mundo Web
manuales - recursos - gráficos - programación...

Home - ASP - Cookies -  1 - 2 - 3  - 4 - 5  - 6

Cookies (VI)
por Luciano Moreno, Web Master de HTMLWeb


Ejemplo práctico

Como ejercicio práctico de este capítulo vamos a crear un sistema de personalización de interfaz de usuario, que permite al mismo elegir el color de fondo de las páginas, el tipo de fuente y el tamaño de la misma. El resultado final del sistema de personalización lo tenemos en esta ventana.

La base de este sistema va a ser una página ASP de configuración, que presenta al usuario tres listas de selección para que elija los parámetros. Una vez elegidos, la página se recarga, los recoge y almacena en una cookie y configura el aspecto de la interfaz de acuerdo con ellos.

Como puede desear realizar varias pruebas hasta obtener una interfaz a su gusto, necesitamos mantener el estado de los combos en cada recarga de página, lo que conseguimos con la ayuda de unas variables que almacenan en cada momento la opción seleccionada en cada combo, volviendo a seleccionarla en cada recarga.

El código de esta página (resuelto_15.asp) es el siguiente:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<%@ Language="VBScript"%>
<%
  'Declaramos las variables necesarias
  Dim color, tipo, tamanio, recogeColor, recogeTipo, recogeSize, guardaColor, guardaTipo, guardaSize
  'Recogemos los valores almacenados en los campos ocultos del formulario
  recogeColor = Request.Form("pasaColor")
  recogeTipo = Request.Form("pasaTipo")
  recogeSize = Request.Form("pasaSize")
  'Comprobamos si es la primera vez que se accede a la página.
  'Si lo es, inicializamos los valores a 0
  'En caso de que se acceda a la página mediante el botón "Atrás", cogemos los valores de la Cookie
  'En caso de recarga de página mediante botón de formulario, almacenamos los nuevos valores en la cookie

  If recogeColor = "" And Request.Cookies("guardaColor") = "" Then
    recogeColor = 0
  Elseif recogeColor = "" And Request.Cookies("guardaColor") <> "" Then
    recogeColor = Request.Cookies("guardaColor")
  Else
    Response.Cookies("guardaColor") = recogeColor
  End If
  If recogeTipo = "" And Request.Cookies("guardaTipo") = "" Then
    recogeTipo = 0
  Elseif recogeTipo = "" And Request.Cookies("guardaTipo") <> "" Then
    recogeTipo= Request.Cookies("guardaTipo")
  Else
    Response.Cookies("guardaTipo") = recogeTipo
  End If
  If recogeSize = "" And Request.Cookies("guardaSize") = "" Then
    recogeSize = 0
  Elseif recogeSize = "" And Request.Cookies("guardaSize") <> "" Then
    recogeSize= Request.Cookies("guardaSize")
  Else
    Response.Cookies("guardaSize") = recogeSize
  End If 
  'Recogemos los valores del los select del formulario
  color = Request.Form("colorFondo")
  If color = "" Then color = Request.Cookies("colorFondo")
  tipo = Request.Form("tipoFuente")
  If tipo = "" Then tipo = Request.Cookies("tipoFuente")
  tamanio = Request.Form("sizeFuente")
  If tamanio = "" Then tamanio = Request.Cookies("sizeFuente")
  'Los escribimos en la cookie
  Response.Cookies("colorFondo") = color
  Response.Cookies("tipoFuente") = tipo
  Response.Cookies("sizeFuente") = tamanio
  color = Request.Cookies("colorFondo")
  tipo = Request.Cookies("tipoFuente")
  tamanio = Request.Cookies("sizeFuente")
  'Ahora, sólo queda rellenar dinámicamente los estilos y los valores de los campos ocultos
  'También ponemos los combos en los valores seleccionados previamente por el usuario

%>
<html>
<head>
  <title>Master de Diseño Web. Módulo 5.15. Ejercicio resuelto 15 (I)</title>
  <style type="text/css">< BR>   body{background-color:<%=color%>;font-size:<%=tamanio%>;font-family:<%=tipo%>;}
   .menu,select{font-size:10px;font-family:Verdana;}
  </style>
  <script language="JavaScript" type="text/javascript">
    function iniciaCombos()
    {
     document.forms[0].colorFondo[<%=recogeColor%>].selected=true;
     document.forms[0].pasaColor.value=<%=recogeColor%>;
     document.forms[0].tipoFuente[<%=recogeTipo%>].selected=true;
     document.forms[0].pasaTipo.value=<%=recogeTipo%>;
     document.forms[0].sizeFuente[<%=recogeSize%>].selected=true;
     document.forms[0].recogeSize.value=<%=recogeSize%>;
    }
  </script>
</head>
<body onload="iniciaCombos()">
<form name="preferencias" action="resuelto_15.asp" method="post">
<table class="menu" align="center">
  <tr>
    <td>Color de fondo:</td>
    <td>
      <select name= "colorFondo"onchange="document.forms[0].pasaColor.value=this.selectedIndex">
        <option value="#FFFFFF">blanco</option>
        <option value="#ffff99">amarillo</option>
        <option value="#ccff99">verde</option>
        <option value="#ffcc66">naranja</option>
      </select>
    </td>
    <td>Tipo de fuente:</td>
    <td>
      <select name= "tipoFuente"onchange="document.forms[0].pasaTipo.value=this.selectedIndex">
        <option value="Verdana">Verdana</option>
        <option value="Arial">Arial</option>
        <option value="Times New Roman">Times New Roman</option>
        <option value="Comic Sans MS">Comic Sans MS</option>
      </select>
    </td>
    <td>Tamaño de la fuente:</td>
    <td>
      <select name= "sizeFuente"onchange="document.forms[0].pasaSize.value=this.selectedIndex">
        <option value="12px">12px</option>
        <option value="14px">14px</option>
        <option value="16px">16px</option>
        <option value="18px">18px</option>
      </select>
    </td>
    <td><input type="submit" value="actualizar"></td>
  </tr>
</table>
<br><br><br><br><br>
<p align="center"><b>En un lugar de La Mancha, de cuyo nombre no puedo acordarme...</b></p>
<br><br><br><br><br><br>
<p align="center"><a href="resuelto_15_2.asp">Seguir navegando</a></p>
<input type="hidden" name="pasaColor" value="0">
<input type="hidden" name="pasaTipo" value="">
<input type="hidden" name="pasaSize" value="">
</form>
</body>
</html>

Para comprobar el buen funcionamiento del sistema creamos una segunda página, que es una muestra del código a implementar en el resto de páginas del sitio. Al cargar, accede a las variables de configuración almacenadas en la cookie y presenta la interfaz de acuerdo con sus valores.

El código de esta página (resuelto_15_2.asp) es el siguiente:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<%@ Language="VBScript"%>
<%
  Dim color, tipo, tamanio
  color = Request.Cookies("colorFondo")
  tipo = Request.Cookies("tipoFuente")
  tamanio = Request.Cookies("sizeFuente")
%>
<html>
<head>
  <title>Master de Diseño Web. Módulo 5.15. Ejercicio resuelto 15 (II)</title>
 <styletype="text/css"><BR>   body{background-color:<%=color%>;font-size:<%=tamanio%>;font-family:<%=tipo%>;}
   .menu,select{font-size:10px;font-family:Verdana;}
  </style>
</head>
<body>
<br><br><br><br><br>
<p align="center"><b>Supecalifargilísticoespialidoso</b></p>
<br><br><br><br><br><br>
<p align="center"><a href="resuelto_15.asp">Configurar de nuevo la interfaz</a></p>
</body>
</html>

 

anterior

Home - ASP - Cookies -  1 - 2 - 3  - 4 - 5  - 6