Foros del Web » Programando para Internet » PHP »

Sesiones

Estas en el tema de Sesiones en el foro de PHP en Foros del Web. Compadres, Tengo otra duda, tengo un sitio que estoy terminando pero estoy tratando de permitirle al usuario tener un máximo de 3 sesiones pero todavía ...
  #1 (permalink)  
Antiguo 24/09/2007, 11:58
 
Fecha de Ingreso: septiembre-2007
Mensajes: 18
Antigüedad: 16 años, 7 meses
Puntos: 0
Sesiones

Compadres,

Tengo otra duda, tengo un sitio que estoy terminando pero estoy tratando de permitirle al usuario tener un máximo de 3 sesiones pero todavía no he podido saber cómo contar el número de veces que un usuario inicia una sesion para restringirlo de esta manera, lo he intentado como lo a continuación muestro

if (!isset($_SESSION['CountMIG'])) {
$_SESSION['CountMIG'] = 1;
} else {
$_SESSION['CountMIG']++;
}

pero no sirve, me pueden dar una mano con este tema porfa?

Gracias por sus comentarios!!!, Saludos

Juan
  #2 (permalink)  
Antiguo 24/09/2007, 12:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Sesiones

Con sesiones no vas a poder implementarlo, ya que las sesiones son independientes por usuario, en dado caso lo que podrias hacer es implementarlo via una base de datos y ahi contar cuantas veces ha entrado.

Saludos.
  #3 (permalink)  
Antiguo 24/09/2007, 12:55
 
Fecha de Ingreso: septiembre-2007
Mensajes: 18
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Sesiones

Buena idea, no habia pensado en eso, gracias!!!
  #4 (permalink)  
Antiguo 25/09/2007, 07:37
 
Fecha de Ingreso: septiembre-2007
Mensajes: 18
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Sesiones

GatorV,

tengo otra pregunta, ya me funciona el contador de sesiones tal y como me lo sugeriste, pero cómo hago ahora para contar las sesiones que se cierran??, para tener un número real de sesiones abiertas actualmente.

Saludos!!
  #5 (permalink)  
Antiguo 25/09/2007, 07:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Sesiones

Teniendo una pagina de logout, puedes decrementar o borrar el numero de sessiones, y si en dado caso dejan abierto el explorador, ejecutar un CronJob que cada hora o cada 30 minutos cheque que sessiones ya estan inactivas y automaticamente las cierre.

Saludos.
  #6 (permalink)  
Antiguo 25/09/2007, 09:36
 
Fecha de Ingreso: septiembre-2007
Mensajes: 18
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Sesiones

GatorV,

Me podrias dar un ejemplo de las dos sugerencias que me das por favor, estoy tratando de hacer lo que dices pero no funciona, aunque no estoy utilizando la página logout que dices lo que estoy haciendo es que al momento de dar clic en el botón cerrar sesion, hago un query para saber cuantas sesiones tiene abiertas el usuario y luego actualizo por medio de otro query a la bd con un valor igual a sesiones-1 que serian las sesiones que quedan abiertas pero no funciona; por ahora lo que hace es que al momento loguearse por segunda vez el usuario, me crea otra cookie con el contador de las sesiones en 2, y a la cookie que se creo al ingresar por primera vez no se le actualiza este valor a 2 sino que queda en 1, y cuando ingreso por tercera vez (solo permito 3 sesiones), pasa lo mismo que a la segunda, pero el contador de sesiones queda en 3 y el de la primera sesion sigue en 1, ahora, cuando trato de ingresar por cuarta vez, desaparece la primer cookie y queda la segunda con el contador en 3, mientras todo esto pasa, en la BD el contador aumenta normalmente hasta quedar en 4, lo que no me deja ingresar a una nueva sesión; hasta ahí bien creo yo, aunque pienso que debería existir siempre una sóla cookie por usuario sin importar el número de sesiones que tenga abiertas.

El problema es que cuando doy clic en el botón cerrar sesion, en cualquiera de las 3 sesiones, la cookie restante que ahora es solo una queda vacia o desaparece y en la BD no se realiza la actualización a total-1 sesiones que quedan y si cierro las sesiones que aún estan abiertas, vuelve a aperecer la segunda cookie pero vacia.

Qué será lo que esta pasando??
  #7 (permalink)  
Antiguo 25/09/2007, 09:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Sesiones

Checa el capitulo sobre sesiones en la pagina de PHP, hay un ejemplo claro de como manejar las sesiones en la base de datos, asi te evitas usar cookies y es mas facil manipular los datos ya que solo tienes que modificar la sesion.

Saludos.
  #8 (permalink)  
Antiguo 25/09/2007, 16:23
 
Fecha de Ingreso: septiembre-2007
Mensajes: 18
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Sesiones

GatorV,

Ya me funciona como habias dicho en principio, trabajando las sesiones con la BD, pero no con portgre como creo me estabas diciendo, lo hice con la página logout.php que decias antes pero tengo un pequeño problema y es el siguiente: el número de sesiones se incrementa bien hasta un máximo de 3 y se decrementa bien hasta cuando queda la última sesión (acá el numero de sesiones es 1), y al cerrar esta el numero de sesiones para dicho usuario que figura en la bd queda en 1 y deberia volverse 0 pues ya no tiene ninguna sesión abierta, en seguida pego el código que utilizo para que le de un vistazo a ver que es lo malo que tiene

<? session_start();
require("conecta_sql_radio.php");
$q = new conectemysql("impresion-guias");
$q1 = new conectemysql("impresion-guias");
$total_sesiones = 0;
$sql = "SELECT a.Sesiones_Abiertas FROM usuarios a, perfiles b
WHERE a.Usuario = '$UsuarioMIG' AND a.Id_perfil = b.Id_perfil";
$q->ejecutar($sql);
$q->cargar();
$total_sesiones = $q->dato(0);
if($total_sesiones >= 3){ #Esto es porque como esta en 4 en
$total_sesiones = 2; #ese momento lo dejo en 2
}else{ #y sigo restando normalmente después
$total_sesiones = $total_sesiones - 1;
}
$sql1 = "UPDATE usuarios SET Sesiones_Abiertas = '$total_sesiones'
WHERE Usuario = '$UsuarioMIG'";
$q1->ejecutar($sql1);
session_destroy();
?><script>location.href = "inicio.php";</script>
  #9 (permalink)  
Antiguo 25/09/2007, 16:40
 
Fecha de Ingreso: septiembre-2007
Mensajes: 18
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Sesiones

Hay otra cosa que se me olvidaba comentar y es que esto pasa solo cuando son 3 sesiones las que se abren, cuando se abren 2 ó solo 1 si funciona bien, no entiendo que es lo que pasa con este código si aparentemente esta bien.

Saludos
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 02:50.