Foros del Web » Programando para Internet » PHP »

PHP OO Actualizar tabla con sesiones cada x cantidad de tiempo.

Estas en el tema de Actualizar tabla con sesiones cada x cantidad de tiempo. en el foro de PHP en Foros del Web. Buenas noches ante todo, muestro el método de mi clase general para que se entienda el problema. Código PHP: function  is_logged () {      mysqli_report ( ...
  #1 (permalink)  
Antiguo 03/12/2015, 00:28
Avatar de Cedyk  
Fecha de Ingreso: abril-2014
Ubicación: Buenos Aires
Mensajes: 22
Antigüedad: 10 años
Puntos: 0
Actualizar tabla con sesiones cada x cantidad de tiempo.

Buenas noches ante todo, muestro el método de mi clase general para que se entienda el problema.

Código PHP:
function is_logged() {
    
mysqli_report(MYSQLI_REPORT_OFF);
    if (isset(
$_SESSION['user_id']) && !empty($_SESSION['user_id'])) {
        echo 
"Tengo una session iniciada: ".$_SESSION['user_id']."<br>";
        
$ss_query "SELECT * FROM site_session WHERE user_id=".$_SESSION['user_id'];
        
$ss_result $this->mysql[1]->query($ss_query);
        if(
$ss_result->num_rows == 1) {
            
$site_session $ss_result->fetch_array(MYSQLI_ASSOC);
            echo 
"Tengo una tabla de Sessiones: ".$site_session['session_id']."<br>";
                    
            
$ultima_actividad strtotime($site_session['last_activity']);
            
$tiempo_actual strtotime('now');
            
$diferencia $ultima_actividad $tiempo_actual;
            
$diferencia_minutos intval($diferencia 60);

            if (
$diferencia_minutos 15) {
                echo 
"cierro session<br>";
                return 
False;
            } else {
                echo 
"Hago el update";
                
$add_time strtotime($site_session['last_activity']) + 900;
                
$new_date date('Y-m-d H:i:s'$add_time);
                
$ss_update "UPDATE site_session SET last_activity='$new_date' WHERE user_id=".$_SESSION['user_id'];
                
$this->mysql[1]->query($ss_update);
                echo 
"Le agregué tiempo a la tabla<br>";
                return 
True;
            }
        }
    } else {
        echo 
"No tengo una tabla de Sessiones.<br>";
        return 
False;


Aclaraciones:
1.- "$this->mysql[1]" hace referencia a una lista, dónde retorno la conexión en otro método.
2.- Los "echo" que hay por todo el método estan a modo de debug.


Introducción:

Al iniciar session se genera un registro en una tabla que almacena los usuarios conectados guardando el DATETIME de cuando hizo login y el DATETIME de la "última actividad". Al inicio de la carga de mi sitio web, se llama a este método que "chequea si el usuario está logeado o no".

Problema:

Cada vez que la página se refresca, se agregan 15 minutos a la tabla de session activa de manera ilimitada haciendo que la session sea tan larga que no expira.
De que manera podría chequear que si el tiempo actual es mayor a 15 minutos desconecte el usuario, pero que sino solo haga el update si ya se actualizó anteriormente o similar.

Agradezco las ideas o la ayuda :)

Etiquetas: cada, cantidad, mysql, registro, select, sesiones, sql, tabla, usuarios
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 08:58.