Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/06/2009, 13:37
ruizdeeguilaz
 
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 8
Respuesta: COOKIE vs SESSION

Hola abimaelrc,

Aunque parezcan iguales, cada una está pensada para cumplir una función determinada:

SESSION

Permite almacenar información que puede ser de utilidad durante la navegación de un usuario por el sitio web. Mientras dure la sesión, la información estará disponible para el código PHP cada vez que el usuario solicite una página. Algunos ejemplos de información que puede resultar interesante guardar en sesión:
  • Si el usuario se ha autenticado o no
  • Identificador del usuario que se ha autenticado
  • Productos añadidos a un carro de la compra
  • Datos de facturación y de dirección para hacer un pedido
  • etc.

Esta información se guarda en el servidor, en un fichero temporal, por lo que sólo es accesible desde el código PHP, pero no desde el navegador. Esto te permite poder almacenar información privada sin correr el riesgo de que algún hacker la vea.

Cuando la sesión finaliza, el fichero se elimina y los datos se pierden, por lo que si el usuario vuelve a acceder, se inicia una sesión nueva que no tiene nada que ver con la anterior y, por tanto, habrá que volver a solicitarle los datos (usuario, contraseña) o tendrá que volver a iniciar la compra seleccionando los productos...

El tiempo que dura la sesión realmente no es de 20 minutos. Este tiempo, que se puede modificar por código, indica el tiempo que ha de pasar sin actividad del usuario para que el servidor finalice la sesión; es decir, pasado este tiempo desde la última petición del usuario, el servidor considera que ya no está navegando por el sitio web, por lo que finaliza la sesión eliminando el fichero temporal.

COOKIE

También permite almacenar información durante la navegación del usuario, pero con el fin de usarla en futuras conexiones (futuras sesiones), más que en la misma sesión. Ejemplos de información que podría ser interesante guardarla en la cookie:
  • Si el usuario ha marcado el check para recordar usuario y contraseña
  • El usuario y la contraseña introducidas por el usuario, para que cuando vuelva a nuestro sitio web, se autentique automáticamente sin solicitar otra vez usuario y contraseña
  • El idioma seleccionado por el usuario la ultima vez que accedió, para mostrarle directamente la página en ese idioma y no solicitarle que elija el idioma cada vez que entre.
  • El último producto que compró (si el sitio web es una tienda online) para mostrarle ofertas de productos relacionados
  • etc.

Y como bien dice GatorV, también se guarda el identificador de la sesión, para poder identificar el fichero temporal con los datos de sesión.

La cookie se guarda en el PC del usuario y se envía al servidor cada vez que se hace una petición, de esta manera se puede acceder a los datos guardados desde el código PHP y modificarlos o procesarlos. En el PC se puede acceder a través del sistema de ficheros; sólo hay que saber dónde la guarda cada navegador. En el caso de Internet Explorer, se guarda en la carpeta de ficheros temporales de internet.

Debido a la función que ejerce la cookie, no tiene una duración determinada. En principio, está siempre disponible mientras el usuario no la elimine. En cualquier caso, dado que se guarda en el PC del usuario, considero que debes usarla con precaución y no almacenar información que pudiera poner en riesgo la seguridad de tu sitio web.

Espero que esta explicación te sirva de algo.

Un saludo,
Carlos.