Tema: sessions
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/10/2003, 12:42
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
El ejemplo típico que viene en todos los libros es el de autentificación para acceder a determinadas áreas restringidas...y digo yo...lo mismo no se puede conseguir sólo chequeando en la base de datos si el nombre de usuario y la contraseña introducida (en la parte de login) coincide con la pareja (usuario-contraseña) almacenada en la base de datos?
Si es así, se da paso al área restringida, y si no, no.
¿qué papel juegan las sessions?
El caso concreto que mencionas; un proceso de "autentificación" completo pasa por dos estados principales:

1) Autentificar al usuario. Eso lo haces como mencionas .. recogiendo los datos de tu usuario por el formulario de "login" típico y contrastando esos datos con tu BD o donde almacenes los datos correctos del par usuario/password para checkearlo.

2) "Seguimiento". El seguimiento se trata de verificar en todas las páginas de una secuencia de páginas que pueda visitar un usuario a tu sitio si fué validado el usuario por el punto 1) .. Ahí es donde entra en juego la sesión, pues, al validar a tu usuario contra tu BD o donde sea, generas una sesión (variables en ella) que indican que el usuario es "válido". Te recuerdo que las sesiones se crean par el usuario que las inicia siendo únicas para ese usuario y por el tiempo que dure la sesión.

De esta forma te evitas cuantiosas consultas a tu BD para ver si el par:usuario/password es correcto .. ademas que esos datos deberías propagarlos por el URL con el consiguiente pelígro de seguridad que ello conlleva.

Cita:
Luego resulta también que las variables registradas como sesions quedan almacenadas en un archivo temporal y se pasan de un link a otro en una misma sesión "mágicamente" sin necesidad de un POST o linkarlo con un query string en el URL.
En la informática en general no suele existir la "mágia" .. La sesión es identificada como "válida" y asocia a ese archivo temporal donde se almacena en el servidor las variables que contiene bajo el denominado: SID (Identificador Único de sesión) .. ese SID es el que se "propaga" (pasa) entre tus páginas por los links que hagas, formularios o incluso por cookies (sólo viaja en la cookie el SID no los datos).

El SID es lo que aquí ves en este foro como:
http://www.forosdelweb.com/editpost.php?

Se compone de dos partes: nombre e identificador de la sesión.
El nombre lo puedes ver o generar con la función session_name() y el ID de esa sesión con session_id() .. y todo junto lo tienes en la constante SID.

Cita:
La pregunta es....cuando se cierra la sesión , si todas esas variables registradas como sessions y que figuran en el archivo temporal no se han grabado en una base de datos, se pierden, no?
Hasta aquí .. si, así es .. si cierras una sesión y esta no ha expirado tu SID pasa al estado "garbage" (basura) en espera a ser eliminado completamente de tu sistema de archivos. Pero, aunque veas físicamente el archivo ahí en tu directorio temporal donde guardes las sesiones, estas no són válidas.

Cita:
porque al encender de nuevo el servidor, el archivo temporal desaparece y no digamos cuando el mismo usuario empieza otra sesión (la anterior desaparece y se crea otra nueva).
El fin de las sesiones no es el de perdurar para siempre .. Sino en el transcurso de X páginas que por ejemplo requieran de esos datos .. NO sólo para una navegación entre páginas que requieran autentificación .. sino en un simple proceso de petición de datos por X formularios en X páginas donde en la -última- lees todos esos datos y los procesas, sin necesidad de ir propagando en campos hidden todos esos datos.

Cita:
Total, que no les veo utilidad por ninguna parte...
Te faltó leer más teoría sobre las sesiones ..

Las sesiones ahorran por ejemplo ancho de banda de tu servidor. Ya que NO viajan al "cliente" (por el URL como el metodo POST/GET ) las vas guardando temporalmente en el servidor y cuando las necesites las usas (lees/modificas/borras o matas la sesión entera).

Las sesiones evitan que muestres datos "sensibles" (contraseñas .. etc) que puedan ser alterados en URL's por ejemplo al propagados por GET o POST incluso. Todo esto por qué permanecen (los valores de estas variables) en el servidor y lo único que "pulula" en el cliente es el SID (que hace referencia directa a ese archivo de sesión creado en tu servidor).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 28/10/2003 a las 12:49