PDF de programación - Técnicas para mantener estado entre páginas con PHP

Imágen de pdf Técnicas para mantener estado entre páginas con PHP

Técnicas para mantener estado entre páginas con PHPgráfica de visualizaciones

Actualizado el 1 de Julio del 2017 (Publicado el 14 de Enero del 2017)
896 visualizaciones desde el 14 de Enero del 2017
110,8 KB
10 paginas
Creado hace 16a (05/10/2007)
Técnicas para mantener estado entre páginas con PHP


Buenos Aires, Septiembre de 2007
Román A. Mussi
[email protected]


1. Alcance de variables en aplicaciones de escritorio y en aplicaciones web

En el presente artículo se aborda la cuestión del ámbito (o alcance) de variables en
aplicaciones web, los inconvenientes que los protocolos sin estado introducen en su desarrollo,
y las posibles formas de resolver estos problemas utilizando PHP.

Comencemos con un poco de historia (muy simplificada) para que el problema quede claro.
Hace unos años era posible crear una aplicación de escritorio, inicializar variables en el módulo
principal del programa, y luego consultar y modificar estas variables desde cualquier
procedimiento de la aplicación. En algunos casos a lo sumo era necesario declarar a estas
variables como “globales” para que se encuentren siempre en alcance. Por cierto, esta facilidad
para el uso de variables perennes condujo al desarrollo de programas con alto acoplamiento y
problemas de mantenimiento por lo que rápidamente fueron desaconsejadas, pero esa ya es
otra historia.

En ese ambiente de desarrollo aún sin llegar a utilizar variables globales se podían utilizar
variables locales que sin ser tan persistentes tenían un ciclo de vida de mediano alcance. En
realidad unos de los problemas con que el programador se encontraba era el de cómo eliminar
de memoria aquellas variables que se habían dejado de usar y consumían innecesariamente
recursos; y es en parte por esto que aparecen en algunos lenguajes los “recolectores de
basura” (garbage collector).

Lo destacable es que en ese contexto el programador podía decidir cúal sería el ciclo de vida
de una variable sin que esto le implicara un esfuerzo adicional de codificación, y más bien tenía
que cuidarse de que las variables no queden “vivas” luego de que habían dejado de ser
utilizadas.

En el ecosistema Web esta lógica de programación cambia por completo. Ahora la más simple
aplicación presenta un esquema de mayor complejidad. En principio podemos observar que el
núcleo de la aplicación y la interfaz de usuario se desacoplan: el núcleo de la aplicación se
ejecuta en el servidor, la interfaz de usuario se despliega en el navegador web en la
computadora del usuario, y el transporte entre cliente y servidor se realiza a través del
protocolo HTTP. Esto significa que una aplicación web involucra una variedad de tecnologías
complejas: servidores web, lenguajes de scripting, protocolos de transporte, navegadores,
etcétera. Y la aplicación web “vive”, para decirlo de algún modo, en ambos espacios del
ecosistema: por momentos como una aplicación más tradicional en el servidor web, pero por
momentos también interactuando con el usuario a través del browser en la PC del cliente.


Aplicación

Web

Servidor

Web

Cliente:

Web Browser

HTTP

En términos secuenciales podemos describir el ciclo de interacción en una aplicación web
sencilla del siguiente modo:


1) El usuario apunta su navegador a una dirección web que representa el punto de



acceso a una aplicación.

2) El servidor web recibe la petición e invoca a la aplicación web, pasando toda la
información recibida desde el cliente. La aplicación web se ejecuta, procesa la
información, y genera como salida una página HTML que es devuelta al cliente a través
del servidor web.

3) El cliente recibe la página HTML y la despliega en el navegador web. El usuario
interactua con esa página (consulta información, completa campos de texto, etc.). Una
vez finalizada la interacción el usuario realiza una nueva petición a la aplicación web, si
es necesario enviando información mediante distintos métodos para que sea
procesada por la aplicación web.

4) Se repiten los pasos 2 y 3, hasta que se cierra la aplicación.


El problema de este ciclo es que HTTP, y por tanto la Web en general, es un protocolo “sin
estado” (en inglés: “stateless”). Ello significa que cada petición enviada a un servidor web es
independiente de cualquier otra petición. Cuando un cliente solicita una página al servidor, el
servidor entrega la página y a continuación olvida todo sobre la petición y el cliente. Cuando el
mismo cliente un momento más tarde vuelve a hacer una nueva petición, el servidor no tiene
forma de identificarlo, no tiene forma de decir: “a sí, Ud. es fulanito y está consultando sobre
naranjas, y hace un momento me dijo que quería 25 con el 10% de descuento”. No puede
hacerlo porque ningún dato sobre el cliente se guarda en el servidor entre cada solicitud.

La desventaja de esta característica es que limita la complejidad de las aplicaciones web a
páginas individuales desconectadas. Para una aplicación web esto significa que si nosotros
ingresamos datos en un formulario, esa información no va a estar disponible automáticamente
para otras páginas de la aplicación. Obviamente si queremos construir una aplicación web
compleja necesitamos superar esta
idear
mecanismos que permitan persistir información entre páginas web, necesitamos utilizar alguna
clase de “pegamento” para conectar esas páginas y utilizarlas como una sola aplicación.

Históricamente varios métodos han sido empleados en programación web para lograr este
efecto, y PHP ha agregado algunos mecanismos adicionales. Los principales son:

limitación. En otras palabras, necesitamos

mail).



• Uso de Cookies,
• Uso de información embebida en URIs (método GET),
• Uso de campos ocultos en un formulario (método POST),
• Uso de Sesiones (propio de PHP).


Para algunos autores el mejor modo de mantener estado entre páginas es utilizando la
habilidad para administrar sesiones que PHP ha incorporado a partir de su versión 4. No
obstante, en el resto del artículo vamos a analizar cada uno de estos métodos para que cada
lector pueda sacar sus propias conclusiones.

Para demostrar la forma en que los métodos pueden ser implementados se desarrollará en
cada caso un ejemplo de aplicación muy sencilla de 3 páginas:


• Página 1: Mediante un formulario se solicita el ingreso de algunos datos (nombre y







• Página 2: Se muestran los datos ingresados en página 1, y se solicitan nuevos (sexo,

edad y hobbie o deporte favorito).

• Página 3: Se muestran los datos ingresados en página 1 y página 2. Los datos
ingresados en la página 1 que se visualizan en la página 3 son persistidos según el
método que corresponda en cada implementación.



Todos los ejemplos que se mencionan en el artículo se pueden descargar en el sitio
www.nitrico.com.ar




2. Uso de Cookies

La información puede ser persistida entre páginas mediante cookies. Las cookies son simples
cadenas de texto, asociadas a un dominio, que se guardan en la computadora del cliente.
Cuando un cliente solicita una página web las cookies correspondientes al dominio de la página
son pasadas al servidor en el encabezado de la petición HTTP. A través de cookies, entonces,
una aplicación web que se ejecuta en el servidor puede identificar un usuario en particular y
obtener y guardar información asociada al mismo.

Las cookies son útiles para guardar pequeñas cantidades de información en el cliente.
Asimismo, las cookies persistentes (aquellas que pueden ser almacenadas por mucho tiempo,
incluso años) pueden ser usadas para personalizar una página cuando un usuario ingresa a un
sitio web luego de un tiempo.

Algunos autores recomiendan el uso de cookies para aquellos casos en que es necesario
almacenar una única información por usuario, pero para aquellas circunstancias en que se
hace necesario seguir la pista de un conjunto de información recomiendan el uso de sesiones
porque el manejo de múltiples cookies se hace engorroso.

Las cookies ya forman parte de la caja de herramientas que tiene un programador para el
desarrollo web. Sin embargo tienen algunas limitaciones, entre las que se destacan:


• Los navegadores sólo deben guardar hasta un total de 300 cookies.
• Los navegadores sólo pueden guardar 20 cookies por cada dominio.
• Una cookie no puede contener más de 4K de datos.
• Los clientes pueden desactivar el uso de cookies en sus navegadores.


Por todas estas razones se recomienda generalmente limitar el uso de cookies.

PHP nos permite guardar y recuperar cookies fácilmente. El script “ejCookies.php” implementa
la mini aplicación de ejemplo usando cookies para persistir los datos. A continuación se
mencionan algunas cuestiones a tener en cuenta cuando se usan cookies.

Envío de cookies al cliente

En PHP, para almacenar datos y variables en cookies se utiliza la función setcookie(). Por
ejemplo, el siguiente código envía al cliente dos cookies denominadas “myname” y “mymail”:

setcookie('myname', 'Alejandro');
setcookie('mymail', '[email protected]');

Como se mencionó anteriormente, las cookies son enviadas al cliente web en el encabezado
HTTP de la salida que genera PHP.

La función setcookie(), como otras que afectan el encabezado HTTP, debe ubicarse al principio
del script PHP, antes de que el programa envíe cualquier otra cosa. En algunos casos esto
puede resultar molesto. Puede ocurrir que comencemos a generar la salida HTML y luego
decidamos cuáles cookies enviar y con qué valores. Si uno inserta un setcookie() en el cuerpo
del script luego de haber enviado algo de HTML se producirá un error.

Para solucionar este problema se
  • Links de descarga
http://lwp-l.com/pdf676

Comentarios de: Técnicas para mantener estado entre páginas con PHP (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad