Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: zagk en 1 Mayo 2018, 05:48 am



Título: ¿Cuál es la diferencia entre la tabla sesión y la tabla usuarios?
Publicado por: zagk en 1 Mayo 2018, 05:48 am
Sé que esta parece una pregunta un poco estúpida pero es algo que no termino de entender. Supongamos que tenemos un sitio web como YouTube donde las personas pueden usar su servicio sin necesidad de estar "logeadas" o registradas en la plataforma.

Cada vez que la persona hace una petición a una página (video) de YouTube, se verifica la existencia de alguna cookie, si no la tiene añade un nuevo registro a las cookie, que llamaré SESS_ID y por ende un nuevo registro a la tabla sesión con ese identificador.

Tengamos en cuenta que en ese punto esa persona tiene una sesión registrada pero no se encuentra registrado en sí en el sistema. Así que YouTube puede ofrecer recomendaciones dependiendo de la interacción de ese usuario (a través del SESS_ID) con el sitio. Pero que sucede cuando el usuario está logeado, obviamente aún existe la cookie en el navegador, pero ¿cómo se reconoce que el está registrado, como se hace la conexión entre SESS_ID y la tabla usuarios? ¿Hay que tener algún campo llamado user_id en la tabla sesión que haga referencia a un usuario en la tabla usuarios o es necesaria otra tabla sesión pero solo para las personas registradas?

Quisiera que me pudieran aclarar esta duda lo más sencillo posible siguiendo, si es posible, un ejemplo de un sitio web como YouTube que acepta usuarios tanto registrados y logeados como no logeados. ¿Cómo debería realizarse un diseño entre esas 2 tablas para un sitio web que funcione así?


Título: Re: ¿Cuál es la diferencia entre la tabla sesión y la tabla usuarios?
Publicado por: #!drvy en 1 Mayo 2018, 19:55 pm
Generalmente, el nombre de la sesión es simplemente un identificador de una sesión. En este caso, ese identificador lleva a un archivo temporal que se usa para recopilar información momentánea sobre el usuario (da igual si esta registrado o no). Es decir, no es una tabla en si (aunque puede serlo) sino que es como un archivo temporal que se borra o reemplaza con una determinada acción  o después de un determinado tiempo.

En dicha sesión (que recordemos, no tiene porque ser una tabla), se pueden almacenar todo tipo de datos incluido un ID de un usuario registrado. Generalmente los datos que se almacenan en dicha sesión, solo serán productivos durante la estancia del usuario en el sitio (o lo que es lo mismo, la duración de la sesión).

Un simple ejemplo seria:

Una sola cookie llamada Session (o lo que sea) que represente el identificador temporal de la sesion. Dicho identificador me lleva a un archivo temporal en el servidor (o un registro en la RAM en caso de servidores con potencia) que es en realidad un arreglo (array) de valores:

Usuario no identificado:
Código
  1. ["browser" => "Mozilla 5.0 / Blabla", "isRegistered" => false, "userID" => false, "history" => ["gatitos graciosos", "memes graciosos"], "sessionStarted" => "12:00 Apr 2018", "sessionEnds" => "23:00 Apr 2018"]

Usuario registrado:
Código
  1. ["browser" => "Mozilla 5.0 / Blabla", "isRegistered" => true, "userID" => 1337, "history" => ["gatitos graciosos", "memes graciosos"], "sessionStarted" => "12:00 Apr 2018", "sessionEnds" => "23:00 Apr 2018"]

Saludos