Foros del Web » Programando para Internet » PHP »

Sesiones en base de datos

Estas en el tema de Sesiones en base de datos en el foro de PHP en Foros del Web. Hola a todos. Estoy interesado en el tema de sesiones y sobretodo si usan bases de datos preferentemente MySQL. He estado investigando y he descubierto ...
  #1 (permalink)  
Antiguo 08/10/2004, 16:51
Avatar de Kernellover  
Fecha de Ingreso: noviembre-2002
Ubicación: Perdido
Mensajes: 251
Antigüedad: 15 años, 1 mes
Puntos: 0
Sesiones en base de datos

Hola a todos.
Estoy interesado en el tema de sesiones y sobretodo si usan bases de datos preferentemente MySQL.

He estado investigando y he descubierto que existen sistemas de sesiones que no usan cookies... como es eso? Tengo entendido que las sesiones necesitan crear cookies en el navegador y hay personas que las tienen bloqueadas, entonces no pueden usar sesiones, a no ser que usen sesiones por db, me he equivocado en alguna cosa? Corriganme si pueden/quieren

Instalando varios paquetes de software como phpnuke o phpbb entre otros, he comprobado que usan en tablas de bases de datos algun registro relacionado con el ID de la sesión abierta por el usuario en questión.

¿Alguien sabe donde puedo informarme mejor sobre el tema?
Gracias

Salut!
  #2 (permalink)  
Antiguo 08/10/2004, 17:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. las sesiones se basan en el concepto del "SID" (Identificador único de sesión) el cual "relaciona" al archivo/o registro de tu BD en tal caso con el cliente que lo creó y lo está usando.

Ese "SID" no es más que un dato, un dato alfanumérico único tipo adf876asd78f6as. Ese dato lo debes propagar entre las llamadas que se hacen al servidor de tus scripts (links, redireccionamientos .. peticiones de páginas en general al servidor) .. Ese dato se puede propagar por un enlace (LINK) con ese dato montado en el URL tipo: PHPSESID=87asdf897asdf9 (nombre sesion=valor del ID de sesión que todo junto hacen el "SID), también puedes propagarlo por COOKIES, pero el caso es que se debe propagar.

De todo esto te puedes informar en la fuente oficial de "sesiones":
www.php.net/session

Ahí veras por ejemplo como cambiar el "handler" para que PHP no almacene las sesiones en un archivo en el servidor como lo hace por defecto y use por ejemplo base de datos ..

Como veras, el SID y su propagación y donde se almacene esos datos .. es indiferente de su propagación. La propagación es necesaria y donde se almacenen los datos .. donde gustes.

Un saludo,
  #3 (permalink)  
Antiguo 08/10/2004, 17:31
Avatar de Kernellover  
Fecha de Ingreso: noviembre-2002
Ubicación: Perdido
Mensajes: 251
Antigüedad: 15 años, 1 mes
Puntos: 0
Como siempre tan brillante en tus explicaciones.

Me ha quedado clarisimo, pero me queda una duda, en caso que deje de propagar el SID representa que pierto la sesión, no? supongo que se pierde si no se propaga durante la vida de la propia sesion por que esta se cierra automaticamete.

Lo veo bastante complejo pero tengo una idea.
Podría usar la IP del cliente y relacionar la sesión en la base de datos con la sesion, pero se me plantea la duda de que si hago esto, en el caso de un ordenador que accede desde una red como por ejemplo desde un router, los de la misma red local tendrán acceso a contenido privado si entran a la misma web... es mala idea o no es así?

Muchas gracias!
  #4 (permalink)  
Antiguo 08/10/2004, 18:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si, si el SID lo pierdes pierdes el "enlace" con el archivo/registro de sesión en el servidor .. Esa "sesión" en el servidor expirará (se borrará) cuando lo defina la configuación de PHP (en modo "normal" de trabajo de PHP sesiones sería: session.gc_maxlifetime .. de tu php.ini)



Cita:
Lo veo bastante complejo pero tengo una idea.
Podría usar la IP del cliente y relacionar la sesión en la base de datos con la sesion, pero se me plantea la duda de que si hago esto, en el caso de un ordenador que accede desde una red como por ejemplo desde un router, los de la misma red local tendrán acceso a contenido privado si entran a la misma web... es mala idea o no es así?
Si quires almacenar las sesiones en Base de datos .. no te compliques .. esa "rueda" ya la han inventado otros, intenta entender como funcionan tal vez para poder hacer tus modificiones si las requieres. Ejemplo estos tutoriales/ejemplos:

http://www.zend.com/zend/spotlight/c...lery-wade8.php
http://people.cs.uchicago.edu/~ido/s...nclude_php.txt

Y el capítulo del manual oficial de PHP:
http://www.php.net/manual/en/functio...ve-handler.php

Un saludo,
  #5 (permalink)  
Antiguo 09/10/2004, 09:24
Avatar de Kernellover  
Fecha de Ingreso: noviembre-2002
Ubicación: Perdido
Mensajes: 251
Antigüedad: 15 años, 1 mes
Puntos: 0
Eso era exactamente lo que necesitaba.

Imagino que ya debes ser inmune a los, "Que bueno que eres" y a los, "Eres el mejor" así que trataré de evitar de decirlo, pero siempre quedará implicito en el muchas gracias del final.

Gracias por todo cluster.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:52.