HTMLeando: para desarrolladores Web

Pregunta


¿Qué son las sesiones en PHP?  

Responder esta pregunta por dudin el 2009-01-26
Quiero aprender cómo funciona un carrito de compras en línea y me han dicho que basa su principio de funcionamiento en el uso de sesiones. Pero estoy en cero, ¿me echan una mano?

Respuestas

Thumb_up
Thumb_down

0%
0%
Es la relación que establece el servidor con un explorador determinado para particularizar la secuencia de páginas que visita un usuario en un sitio web. Gracias a esto se pueden mantener configuraciones hechas por el usuario y establecer un tratamiento diferenciado a cada sesión.

Para trabajar con sesiones se crea un identificador único que se asigna a cada uno de los vínculos que mantienen las instancias del explorador con el servidor.

El proceso en cualquier lenguaje de programación podría ser algo así: ¿Existe una sesión?, si existe la retomamos, si no existe la creamos y le damos un identificador único.

Podemos también crear una cookie que incluya el identificador de sesión, pero es conveniente recordar que la disponibilidad o no de las cookies depende del usuario, y no es conveniente fiarse de lo que un usuario pueda o no tener habilitado.

- Inicialización de la variable de sesión

Para utilizar sesiones en PHP lo primero es inicializarlas.

Podemos hacerlo explícitamente, mediante la función session_start(), o al registrar una variable en una sesión mediante session_register('miVariable'). En ambos casos se crea una nueva sesión, si no existe, o se retoma la sesión actual.

Si no has utilizado nunca las sesiones, el concepto de variable de sesión, puede resultar un poco extraño. Básicamente es una variable, como cualquiera de las que gestiona PHP4, pero que reside en un espacio específico en el servidor, junto con el identificador de sesión, y que pertenece únicamente a un usuario.

- Funciones asociadas al trabajo con sesiones

Podemos obtener la sesión en cualquier momento mediante la función session_id().

Podemos averiguar también el nombre de la sesión, o modificarlo, mediante la función session_name().
La asignación del nombre de sesión debe realizarse antes que ninguna otra función con sesiones, antes que session_start() o session_register().

Si queremos eliminar una variable de la sesión actual, utilizamos la función session_unregister(nombre). Esta función no borra la variable global correspondiente a nombre, sólo evita que la variable sea guardada como parte de la sesión. Debe llamar a unset() para eliminar la variable global correspondiente.

Para comprobar si una variable está registrada en una sesión, utilizamos la función session_is_registered(nombre)

Finalmente, para destruir todos los datos asociados con la sesión actual se utiliza la función session_destroy(). No destruye ninguna de las variables globales asociadas a la sesión ni la cookie, por lo que es una buena práctica, antes de destruir una sesión, destruir todas las variables globales asociadas a ella.

- Error común
Uno de los errores más comunes cuando se utilizan sesiones es dejar líneas en blanco antes de la inicialización de PHP o enviar alguna salida a la pantalla. Para probarlo crea una línea en blanco o con cualquier cosa antes de
Warning: Cannot send session cookie - headers already sent by (output started at /demo/sesiones.php:2) in / demo/sesiones.php on line 4


PHP está informando de que no puede activar las cookies en el navegador del usuario, porque las cabeceras ya han sido enviadas. Simplemente por la existencia de una línea en blanco. Como medida práctica, no dejes espacios ni antes del inicio del script, ni después de la finalización.



por Anónimo el 2009-01-26

Thumb_up
Thumb_down

0%
0%
Aquí tienen un ejemplo de inicialización de la variable de sesión:
session_start();
header("Cache-control: private"); //IE 6 Fix
 
session_register("variable");
$_SESSION['variable'] = xxx;
Trozo de código tomado de Snipplr.com. Enviado por fugue el 29-12-2006

por maikel el 2009-02-03

Thumb_up
Thumb_down

0%
0%
Para borrar o destruir una variable de sesión sería:
unset($_SESSION['variable']);
por Anónimo el 2009-06-02

Anónimo:   Entrar


Consejo: Sé tan específico y descriptivo como puedas. Comparte tu experiencia personal o tus conocimientos.
Puedes investigar para completar tu respuesta.

Puedes poner directamente trozos de código usando las etiquetas [code=php] y [/code] o incrustar desde Snipplr.com [snippet=id_snippet]

Compartir: WebeameMeneame Delicious Digg

Preguntas relacionadas