Foros del Web » Programando para Internet » PHP »

Como evitar multisesion en php y mysql

Estas en el tema de Como evitar multisesion en php y mysql en el foro de PHP en Foros del Web. Hola estoy trabajndo en una plataforma mysql y php, es para un colegio, se trata de q los estudiantes, profesores y el administrador entren con ...
  #1 (permalink)  
Antiguo 16/07/2010, 23:06
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 1 mes
Puntos: 0
Como evitar multisesion en php y mysql

Hola estoy trabajndo en una plataforma mysql y php, es para un colegio, se trata de q los estudiantes, profesores y el administrador entren con su clave y usuario respectivos pero quiero q si un usuario esta dentro del sistema y quiera abrir otra sesion ya teniendo una abierta no lo deje pasar.........


Les agradeceria su ayuda por favor
  #2 (permalink)  
Antiguo 17/07/2010, 03:58
 
Fecha de Ingreso: septiembre-2009
Mensajes: 68
Antigüedad: 14 años, 7 meses
Puntos: 4
Respuesta: Como evitar multisesion en php y mysql

Podrias añadir un campo "activo" en la tabla de usuarios el cual se activara al hacer login y se desactivara al hacer logout. Y poner como condicion de logeo que estuviera desactivado, claro.
  #3 (permalink)  
Antiguo 17/07/2010, 17:26
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Como evitar multisesion en php y mysql

yo estoy haciendo algo parecido con un log e medio buscado pero me han salido otras prioridades del sistema entonces mi pregunta que pasa si se va la luz o si el usuario simplemente no cierra sesion?? no se quedaria activo??
  #4 (permalink)  
Antiguo 17/07/2010, 18:11
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Como evitar multisesion en php y mysql

ya somos 3 que estamos trabajando en lo mismo, pero yo tengo eso solucionado

aqui esta tu respuesta si se va la luz y no cerro sesion
http://www.forosdelweb.com/f18/quien-ayuda-hacer-funcion-para-cerrar-sesion-estar-inactivo-825690/

con respecto a lo de las sesiones,
yo lo que hago es crearle un tipo de autorizacion a cada modulo

Código PHP:
<?
$_SESSION
["entrada"]="alumno"//ingreso al modulo alumno
$_SESSION["entrada"]="profesor"//ingreso al modulo profesor
$_SESSION["entrada"]="supervisor"//ingreso al modulo supervisor
?>
asi si esta metido en el modulo alumno y busca abrir el modulo supervisor o profesor, automaticamente se le asigna a la session el nombre correspondiente

cualquier cosa podemos compartir informacion, ya que estamos trabajando en lo mismo
  #5 (permalink)  
Antiguo 17/07/2010, 18:47
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Como evitar multisesion en php y mysql

ok copie tu script lo llame y me dijo la session se actualizo antes pero como sabe ella cuando a estado inactivo?? podrias explicarmelo?? x favor
  #6 (permalink)  
Antiguo 17/07/2010, 19:00
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Como evitar multisesion en php y mysql

el que tienes que copiar es este
el archivo lo llame inactivo.php
Código PHP:
<?php
function inactivo() 
{

session_start();

// Obtengo la fecha actual
$x date("H i s m d Y",time());
// creo un arreglo para dividir horas,minutos,segundos, etc.
$fecha explode(" ",$x);
//imprimo el arreglo
$fecha1=date("H:i:s d/m/Y ",mktime($fecha[0],$fecha[1],$fecha[2],$fecha[3],$fecha[4],$fecha[5]));

if(
$_SESSION["hora"]=="") {
// Hago la suma de los minutos
$fecha[1] = $fecha[1]+5;
// Asigno la fecha modificada a una nueva variable
$fecha2 date("H:i:s d/m/Y ",mktime($fecha[0],$fecha[1],$fecha[2],$fecha[3],$fecha[4],$fecha[5]));

$_SESSION["hora"]=$fecha2;

}
else
{
if(
$fecha1>$_SESSION["hora"]) {

?>

             <script type='text/javascript' language='javascript'>
         alert('EXPIRO SU SESION') 
         document.location.href='logout.php'     
             </script> 
<?
}
else
{
$fecha[1] = $fecha[1]+5;
// Asigno la fecha modificada a una nueva variable
$fecha2 date("H:i:s d/m/Y ",mktime($fecha[0],$fecha[1],$fecha[2],$fecha[3],$fecha[4],$fecha[5]));

$_SESSION["hora"]=$fecha2;

}
}

}
?>
y en cada pagina debes colocar

Código PHP:
<? include("../inactivo.php"); 
inactivo()
?>
depende como sea la ruta donde tengas el primer archivo


edito: lo que hace en si el archivo es que si han pasado 5 minutos te muestra un mensaje y te envia a la pagina de logout.php (alli tu colocas la tuya)
  #7 (permalink)  
Antiguo 17/07/2010, 19:00
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Como evitar multisesion en php y mysql

ok analice el codig y creo que lo entendi eso responde si esta inactivo pero que pasa cuando tu no cierras session sino que cierras el navegador?? como haces para que se actualice el campo donde esta activo a desconectado o como lollame??
  #8 (permalink)  
Antiguo 17/07/2010, 19:14
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Como evitar multisesion en php y mysql

bueno en cuanto a los campos para actualizarlos, la verdad no me he metido con eso, porque como yo estoy creando la aplicacion, no veo eso necesario

porque necesitas tu eso?
  #9 (permalink)  
Antiguo 17/07/2010, 19:21
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Como evitar multisesion en php y mysql

hablabamos de que se creara un campo en la base de datos para saber si esta online y no te deg conectarte desde otra ip, es ahi donde enfoco esa pregunta yo concegui algo de saber los usuario por la ip pero de verdad tengo un hermano que se pone a jorungar la computadora y no encuentro eso pero el de salir del sistema al estar inactivo esta bueno el q mandaste muchas gracias seguire investigando
  #10 (permalink)  
Antiguo 17/07/2010, 19:54
Avatar de AhmedRugama  
Fecha de Ingreso: diciembre-2008
Ubicación: Nicaragua
Mensajes: 160
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: Como evitar multisesion en php y mysql

Hola, lo que se me ocurre a mi es que podes crear un campo "activo" en la tabla users como te habia dicho albert_23

Este campo activo lo estas actualisando con ajax cada 5 minutos.
Y entonces en cada pagina verificas que el campo activo no este atrasado mas de 6 minutos.
(Yo le daría un minuto de margen por si acaso.)

Con ajax podes hacer consultas sin actualizar la pagina, si no estas muy familiarizado con ajax te aconsejo que no uses javascript crudo sino jquery es mucho mas fácil.

  #11 (permalink)  
Antiguo 17/07/2010, 20:03
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Como evitar multisesion en php y mysql

yo se y mas o menos entiend ajax la consulta que tu me dices esta muy buena pero que pasaria cierran el navegado y no cierran sesion como x lo menos yo casi siempre ago cierro el navegador y apago mi makina la de mi casa xq aki nadien se mete solomi hermano y el no esta pendiente de echarme a perder mis cuentas entonces a lo q vamos q pasa si cierro el navegador?? no qdo activo?? x en ningun momento desactive el campo online o activo como lo kieras llamar
  #12 (permalink)  
Antiguo 17/07/2010, 20:19
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Como evitar multisesion en php y mysql

pero si te fijas los CMS como Joomla y Wordpress, puedes iniciar tu sesion en 2 computadoras al mismo tiempo, hasta en facebook puedes hacer lo mismo.

lo que si puedes estar seguro (dependiendo de tu hosting) que al cerrar el navegador se destruiran las cookies y las sesiones segun las tengas configuradas
  #13 (permalink)  
Antiguo 17/07/2010, 20:23
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Como evitar multisesion en php y mysql

es que eso es lo que yo hace tiempo habia como kien dic aceptado hoy que tocaron el tema me revivieron la inquietud y como nunk lo platie en el foro quise preguntarlo para ver si alguien tenia la respuesta claro yo estoy como kien dice resignado pero si sale una respuesta seria muy buena no lo creen asi??
  #14 (permalink)  
Antiguo 17/07/2010, 20:33
Avatar de AhmedRugama  
Fecha de Ingreso: diciembre-2008
Ubicación: Nicaragua
Mensajes: 160
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: Como evitar multisesion en php y mysql

Hola Carlos, eso ya sería otra pregunta, el metodo que te dije anteriormente es para evitar las multisesiones que te abran tu sesion en otra maquina obviamente que en el login tienes que poner que si el campo activado esta atrasado mas de 6 minutos es posible iniciar sesion porque ya se ha cerrado la pagina.

Son dos campos no se si ha quedado claro "activado" y "tiempo activado"
Activado tiene valores 0 y 1 y tiempo activado es el tiempo en que se activo time()

Sobre lo ultimo: Si dejas la sesion abierta en tu maquina, igual nadie va a poder entrar porque a los 6 minutos de no seguir actualisando "tiempo activado" los vas a mandar al login y activado lo pones en 0.

Igual creo que las sesiones $_SESSION son eliminadas al cerrarse el navegador, o tienen su timeout tendrias que investigar mas al respecto en el foro pero como te digo no creo ue sea necesario ya que si no cierran la session igual en 6 minutos no pueden entrar
  #15 (permalink)  
Antiguo 17/07/2010, 20:39
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Como evitar multisesion en php y mysql

Cita:
Iniciado por carlos_belisario Ver Mensaje
es que eso es lo que yo hace tiempo habia como kien dic aceptado hoy que tocaron el tema me revivieron la inquietud y como nunk lo platie en el foro quise preguntarlo para ver si alguien tenia la respuesta claro yo estoy como kien dice resignado pero si sale una respuesta seria muy buena no lo creen asi??
bueno a mi tambien me gustaria saber la respuesta.

y por cierto el proyecto que tu estas realizando es para escuela, liceo o universidad?
  #16 (permalink)  
Antiguo 17/07/2010, 20:44
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Como evitar multisesion en php y mysql

Cita:
Iniciado por AhmedRugama Ver Mensaje
Hola Carlos, eso ya sería otra pregunta, el metodo que te dije anteriormente es para evitar las multisesiones que te abran tu sesion en otra maquina obviamente que en el login tienes que poner que si el campo activado esta atrasado mas de 6 minutos es posible iniciar sesion porque ya se ha cerrado la pagina.

Son dos campos no se si ha quedado claro "activado" y "tiempo activado"
Activado tiene valores 0 y 1 y tiempo activado es el tiempo en que se activo time()

Sobre lo ultimo: Si dejas la sesion abierta en tu maquina, igual nadie va a poder entrar porque a los 6 minutos de no seguir actualisando "tiempo activado" los vas a mandar al login y activado lo pones en 0.

Igual creo que las sesiones $_SESSION son eliminadas al cerrarse el navegador, o tienen su timeout tendrias que investigar mas al respecto en el foro pero como te digo no creo ue sea necesario ya que si no cierran la session igual en 6 minutos no pueden entrar
tu me dices que en la tabla usuario ponga un campo de activado ok lo puse cuando cierro sesion actualizo ese campo a descativado mi gran pregunta es: como actualizo la tabla usuario para que el campo pase a desactivado?? disculpa tanta molestia pero es que el tema de verdad me interesa
  #17 (permalink)  
Antiguo 17/07/2010, 20:46
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Como evitar multisesion en php y mysql

Cita:
Iniciado por johhan16 Ver Mensaje
bueno a mi tambien me gustaria saber la respuesta.

y por cierto el proyecto que tu estas realizando es para escuela, liceo o universidad?
yo ahorita estoy trabajando en la parte de control de estudios de una universidad y desean migrar a php pero casi nadien sabe y yo con lo poco que e ido aprendiendo entre estos foros y el internet es que lo e ido migrando pero imaginate un sistema asi para la web tiene q tener mucha seguridad
  #18 (permalink)  
Antiguo 17/07/2010, 20:57
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Como evitar multisesion en php y mysql

Cita:
Iniciado por carlos_belisario Ver Mensaje
yo ahorita estoy trabajando en la parte de control de estudios de una universidad y desean migrar a php pero casi nadien sabe y yo con lo poco que e ido aprendiendo entre estos foros y el internet es que lo e ido migrando pero imaginate un sistema asi para la web tiene q tener mucha seguridad

bueno estamos en lo mismo los 2 si quieres podemos trabajar en conjunto, me ayudas y te ayuda en lo que se pueda, te enviare por privado mi correo y la pagina de prueba para que veas como va
  #19 (permalink)  
Antiguo 17/07/2010, 21:01
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Como evitar multisesion en php y mysql

ok asi tenemos apoyo los dos
  #20 (permalink)  
Antiguo 18/07/2010, 04:18
Avatar de AhmedRugama  
Fecha de Ingreso: diciembre-2008
Ubicación: Nicaragua
Mensajes: 160
Antigüedad: 15 años, 4 meses
Puntos: 6
Sonrisa Respuesta: Como evitar multisesion en php y mysql

Hola, carlos_belisario te resumo el proceso:

activo y tiempo_activo son int.
/* Yo manejo mis tiempos en enteros ese es gusto de cada quien */

- Al iniciar sesión se comprueba:
que activo esté en 0 /* si el usuario cerró sesion esto esta en 0 */
o que tiempo_activo lleve mas de 6 min de la hora actual /* Esto es por si al usuario se le olvido cerrar la sesión, en este caso activo quedaría en 1 pero "tiempo_activo" dejará de actualisarse */

/* Fijate que puse "o" no "y" es decir "||" */
Tambien cambias activo a 1 si es que no lo está

- Al abrir una pagina protegida:
Normal, comprobar el nombre y pass del usuario con las variables de session
Cada una de estas paginas deben actualisar tiempo_activo cada 5 minutos con ajax


Ahora ¿ Que pasa si el usuario esta conectado y sale del navegador perdiendo los valores de la sesión pero quiere volver a entrar inmediatamente? Tendría que esperar que hallan 6 minutos de diferecia entre la hora actual y "tiempo_activo" para iniciar sesión de nuevo.
Lo que puedes hacer para evitar esta falla es crear un cookie que tenga el mismo valor que un campo "session_id" el cual preferiblemente lo llenas con un valor random y al iniciar session el if quedaria algo asi:

if( activo == 0 || tiempoactivo < (time()-6minutos) ||(cookie == session_id && tiempoactivo >(time()-6minutos))

/* La primera parte es lo que sale arriba y la segunda desde "cookie" es la solucion del problema */

El ultimo proceso sería al cerrar sesión cambiar activa = 0



Esto es lo que haría en mi humilde opinión, si a alguien se le ocurre otra solución que lo comparta

Etiquetas: mysql
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 06:12.