Comunidad PHPeros

Lenguajes => PHP => Mensaje iniciado por: MaNuX en 07 de Agosto de 2013, 20:35:06 pm

Título: [Ayuda] Mostrar nick ususarios online
Publicado por: MaNuX en 07 de Agosto de 2013, 20:35:06 pm
Bueno como dice el titulo estoy intentando que se muestre los usuarios conectados y consigo que aparezca el nick pero al cerrar la sesión ya permanece el nick hay siempre.

Código: [Seleccionar]
<?php
$online 
mysql_query("SELECT nick, colornick FROM usuarios WHERE online > 0 ORDER BY id");
while (list(
$name$colornick) = mysql_fetch_row($online))
{
    
$i++;
    if (
$i == $nb[3])
    {
        
$sep "";
    } 
    else
    {
        
$sep ", ";
    } 

    echo 
"<a href=\"home.php?nick=" $name "\" style=\"color:" $colornick "; text-shadow:none\">" $name "</a>" $sep;
}

if (
mysql_num_rows($online) == NULL) echo &#39;<em style="color:#444; text-shadow:none">No hay usuarios conectados</em>&#39;;
?>


Haber si pueden echarme una mano. Gracias.
Título: Re:[Ayuda] Mostrar nick ususarios online
Publicado por: iStocker en 08 de Agosto de 2013, 10:43:53 am
Verifica que al cerrar la sesión el usuario actualice el campo online a 0.
Título: Re:[Ayuda] Mostrar nick ususarios online
Publicado por: MaNuX en 08 de Agosto de 2013, 15:16:35 pm
Podrias echar una mano para hacerlo. Gracias.
Título: Re:[Ayuda] Mostrar nick ususarios online
Publicado por: iStocker en 09 de Agosto de 2013, 01:25:35 am
Podrias echar una mano para hacerlo. Gracias.
Código: [Seleccionar]
UPDATE users SET online = 0 WHERE id = 1;
Título: Re:[Ayuda] Mostrar nick ususarios online
Publicado por: SoyJoaquin. en 10 de Agosto de 2013, 13:58:45 pm
Código: [Seleccionar]
UPDATE users SET online = 0 WHERE id = 1;

Para completar esto, lógicamente el "id" cambiaría según la cuenta en que te encuentres conectada...
Yo por mi parte, no lo haría de este método. Usaría timesnap para validar el tiempo de conexión del usuario.
Saludos.
Título: Re:[Ayuda] Mostrar nick ususarios online
Publicado por: MaNuX en 12 de Agosto de 2013, 15:32:08 pm
Para completar esto, lógicamente el "id" cambiaría según la cuenta en que te encuentres conectada...
Yo por mi parte, no lo haría de este método. Usaría timesnap para validar el tiempo de conexión del usuario.
Saludos.

Podrias explicar como hacerlo del metodo que mencionas? Gracias.
Título: Re:[Ayuda] Mostrar nick ususarios online
Publicado por: iStocker en 14 de Agosto de 2013, 18:58:36 pm
Podrias explicar como hacerlo del metodo que mencionas? Gracias.
En un campo/session/cookie pones la fecha actual + el tiempo deseado de conexión, compruebas cada 5 tiempo si el tiempo expiro y cierras la sesión del usuario.
Título: Re:[Ayuda] Mostrar nick ususarios online
Publicado por: MaNuX en 15 de Agosto de 2013, 10:19:40 am
Gracias, ahora estoy intentando la separación de los nicks, pero me salen siempre con comas delante asi:

Pepe, Fran,

Y quiero que aparezca:

Pepe, Fran y que tambien aun que solo sea uno conectado salga sin coma.

Este es el código:

Código: [Seleccionar]
if ($i == $nb[3])
    {
        $sep = "";
    }
    else
    {
        $sep = ", ";
    }
Título: Re:[Ayuda] Mostrar nick ususarios online
Publicado por: iStocker en 18 de Agosto de 2013, 22:11:39 pm
Gracias, ahora estoy intentando la separación de los nicks, pero me salen siempre con comas delante asi:

Pepe, Fran,

Y quiero que aparezca:

Pepe, Fran y que tambien aun que solo sea uno conectado salga sin coma.

Este es el código:

Código: [Seleccionar]
if ($i == $nb[3])
    {
        $sep = "";
    }
    else
    {
        $sep = ", ";
    }
puedes utilizar un ciclo for y comprobar que cuando i es igual o menor a el tamaño del array de $nb (sizeof()) no muestre la coma en caso contrario la muestre.
Título: Re:[Ayuda] Mostrar nick ususarios online
Publicado por: SoyJoaquin. en 19 de Agosto de 2013, 00:59:00 am
puedes utilizar un ciclo for y comprobar que cuando i es igual o menor a el tamaño del array de $nb (sizeof()) no muestre la coma en caso contrario la muestre.

Sí, con count() puede sacar la cantidad de indices del array y comprobarlo por medio del bucle que utilice para la extracción de datos de la consulta.

Saludos.
Título: Re:[Ayuda] Mostrar nick ususarios online
Publicado por: MaNuX en 19 de Agosto de 2013, 15:46:06 pm
Por una parte me a quedado claro, pero nose como crear el código para que funcione :S
Título: Re:[Ayuda] Mostrar nick ususarios online
Publicado por: MaNuX en 02 de Septiembre de 2013, 16:55:24 pm
Perdonad por el doble post!!

Pero necesito saber como hacer que se cierre la sesión cada cierto tiempo si no esta el usuario navegando por la web, ya que siempre se queda online. E intentado con count() pero no consigo hacerlo funcionar. Este es el código:

Código: [Seleccionar]
$i++;
    if ($i < count(3))
    {
        $sep = ", ";
    } else {
        $sep = ", ";
    }

Y aquí el de desconexión:

Código: [Seleccionar]
@session_start();
if(!$_SESSION['nick']) {
header("Location: ./"); // No esta conectado se le redirecciona al inicio
}else{
mysql_query("UPDATE usuarios SET online = 0 WHERE nick = '$nick'"); // Cuando se desconecte se pone "ONLINE" a 0
session_destroy();
header("Location: ./"); // Cuando inicie sesion se manda al inicio
}
exit();

Saludos.
Título: Re:[Ayuda] Mostrar nick ususarios online
Publicado por: SoyJoaquin. en 02 de Septiembre de 2013, 17:15:13 pm
¿Que tiene que ver count()?
Lo que dijimos referente a eso es para saber el ultimo index del bucle. Para la desconexión no lo hagas asi ya que nadie (Por experiencia) usa el botón para "desconectar". Por lo que tendrás que usar time(); para validar el tiempo de conexión del usuario, digamos en un periodo de... ¿5 Minutos?.
Título: Re:[Ayuda] Mostrar nick ususarios online
Publicado por: MaNuX en 02 de Septiembre de 2013, 17:27:31 pm
¿Que tiene que ver count()?
Lo que dijimos referente a eso es para saber el ultimo index del bucle. Para la desconexión no lo hagas asi ya que nadie (Por experiencia) usa el botón para "desconectar". Por lo que tendrás que usar time(); para validar el tiempo de conexión del usuario, digamos en un periodo de... ¿5 Minutos?.

Y me podrias ayudar con el código para añadir el "count()"? También donde debería poner, en el login, en el index...

Por que el usuario ya que como dices es verdad no utilizan el botón de desconctar, quiero que se desconecte en un cierto tiempo para que el el campo "ONLINE" no aparezca siempre como conectado.

Saludos.

Saludos.
Título: Re:[Ayuda] Mostrar nick ususarios online
Publicado por: SoyJoaquin. en 02 de Septiembre de 2013, 17:43:48 pm
Y me podrias ayudar con el código para añadir el "count()"? También donde debería poner, en el login, en el index...

Por que el usuario ya que como dices es verdad no utilizan el botón de desconctar, quiero que se desconecte en un cierto tiempo para que el el campo "ONLINE" no aparezca siempre como conectado.

Saludos.

Saludos.

Verás, time() devuelve un valor en segundos desde si mal no recuerdo, 1970. Con esto podemos hacernos un sistema para darle un rango de tiempo al usuario.
Imaginemos:

Código: [Seleccionar]
time() + (24 * 60 * 60);
Esto sería 24 horas * 60 minutos * 60 segundos sumados al valor timesnap actual, por lo que daría 24 horas (En segundos) en el futuro.
En un sistema como este, usualmente damos de 5 a 10 minutos en el futuro (Rango de tiempo del usuario).

Código: [Seleccionar]
time() + (5 * 60);
Ese valor lo vamos almacenando (Solo si el usuario esta conectado) siempre que el usuario actualice la pagina por lo que debe de estar en un archivo que se repita en todos los ficheros de tu web, te recomiendo aquel donde guardas las funciones o clases para ser utilizadas en tu código.

Para validar si los usuarios siguen conectados, has una consulta a todos los usuarios conectados, aplicale un bucle y vas verificando el tiempo de conexión de esos usuarios y que si este es menor al timesnap actual es por que sencillamente, están desconectados.

Saludos.

Título: Re:[Ayuda] Mostrar nick ususarios online
Publicado por: MaNuX en 02 de Septiembre de 2013, 18:11:23 pm
Verás, time() devuelve un valor en segundos desde si mal no recuerdo, 1970. Con esto podemos hacernos un sistema para darle un rango de tiempo al usuario.
Imaginemos:

Código: [Seleccionar]
time() + (24 * 60 * 60);
Esto sería 24 horas * 60 minutos * 60 segundos sumados al valor timesnap actual, por lo que daría 24 horas (En segundos) en el futuro.
En un sistema como este, usualmente damos de 5 a 10 minutos en el futuro (Rango de tiempo del usuario).

Código: [Seleccionar]
time() + (5 * 60);
Ese valor lo vamos almacenando (Solo si el usuario esta conectado) siempre que el usuario actualice la pagina por lo que debe de estar en un archivo que se repita en todos los ficheros de tu web, te recomiendo aquel donde guardas las funciones o clases para ser utilizadas en tu código.

Para validar si los usuarios siguen conectados, has una consulta a todos los usuarios conectados, aplicale un bucle y vas verificando el tiempo de conexión de esos usuarios y que si este es menor al timesnap actual es por que sencillamente, están desconectados.

Saludos.

Nose si te entendi bien y bueno e creado este código que nose si estará bien, todavia no lo e probado pero seguramente necesite algo mas...

Código: [Seleccionar]
$users=mysql_query("SELECT COUNT(*) AS total FROM usuarios") or die (mysql_error());
$total=mysql_result($users,0,"total");
time() + (5 * 60 * 5); {}