entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

4votos

Detectar online usuario php

Hola, tengo este codigo, que en teoria debia obtener de la base de datos la fecha de ultima coneccion del usuario (La variable $online del ejemplo) y compararla con la fecha actual restando 5 minutos por si el usuario sigue en la pagina pero no ha la actualizado.
El problema es que hay fechas que me dice que esta online y no es asi, no se porque motivo.

 <? php 
$online = '31-12-2013 18:52:24'; */ Ejemplo fecha (Tenia que obtenerse de la BD) */
$tiempo = date("d-m-Y H:i:s"); */ Fecha actual */
$nuevafecha = strtotime ( '-5 minute' , strtotime ( $tiempo ) ) ; */ Le resto 5 minutos a la fecha actual, para dar un poco de tiempo al usuario */
$nuevafecha = date ( 'd-m-Y H:i:s' , $nuevafecha ); */ Vuelvo a poner la fecha en su formato */
 if ($online <= $nuevafecha){
    */ El usuario no esta online */
    }else{ 
    */ El usuario esta online (Eso es lo que me dice a mi, pero no es verdad)*/
    }?>

PD: Si la solucion es cambiar el formato, no puedo porque tengo mas de 10000 usuarios y tendria que hacerlo uno por uno.

1 Respuesta

3votos

Leonardo-Tadei Puntos227010

Hola jaumesv,

parece que el error en tu código está en el formato que usás y en querer compararlo con

if ($online <= $nuevafecha){
...

En el formato que usás, y siendo que la comparación es entre strings, la fecha '31-12-2013 18:52:24' queda como payor que por ejemplo la fecha '21-01-2014 18:52:24' ya que alfabéticamente '2' está antes que '3'.

Lo que tendrías que hacer es convertir para la comparación la fecha en el formato '31-12-2013 18:52:24' a uno comparable como string: Y-m-d H:i:s.

Podría hacerce así:

<?php
function convertir($f) {
    // Convierte fecha en formato  d-m-Y H:i:s a Y-m-d H:i:s
    $tmp = explode(' ', $f);
    $dia = explode('-', $tmp[0]);
    return "{$dia[2]}-{$dia[1]}-{$dia[0]} {$tmp[1]}";
}

$v = '31-12-2013 18:52:24';

print("Converte $v a ". convertir($v));

Saludos!

0voto

Jaumesv comentado

Ostras! No me habia dado cuenta de eso! Muchas Gracias.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta