Autor Tema: [Ayuda] Mostrar nick ususarios online  (Leído 1394 veces)

Desconectado MaNuX

  • PHPero Avanzado
  • ****
  • Mensajes: 385
  • Karma: 4
  • Sexo: Masculino
  • PHP & MySQL
    • Ver Perfil
    • CliKys
[Ayuda] Mostrar nick ususarios online
« 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.


Comunidad PHPeros

[Ayuda] Mostrar nick ususarios online
« en: 07 de Agosto de 2013, 20:35:06 pm »

Desconectado iStocker

  • PHPer@ Fijo
  • ***
  • Mensajes: 104
  • Karma: 6
  • ~ єssєитιαʟ ~
    • Ver Perfil
Re:[Ayuda] Mostrar nick ususarios online
« Respuesta #1 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.
¡FUUU!


Cita de: Mary Shaw
Menos del 10% del código tienen que ver directamente con el propósito del sistema; el resto tiene que ver con la entrada y salida, validación de datos, mantenimiento de estructuras de datos y otras labores domésticas



[/cent

Desconectado MaNuX

  • PHPero Avanzado
  • ****
  • Mensajes: 385
  • Karma: 4
  • Sexo: Masculino
  • PHP & MySQL
    • Ver Perfil
    • CliKys
Re:[Ayuda] Mostrar nick ususarios online
« Respuesta #2 en: 08 de Agosto de 2013, 15:16:35 pm »
Podrias echar una mano para hacerlo. Gracias.


Desconectado iStocker

  • PHPer@ Fijo
  • ***
  • Mensajes: 104
  • Karma: 6
  • ~ єssєитιαʟ ~
    • Ver Perfil
Re:[Ayuda] Mostrar nick ususarios online
« Respuesta #3 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;
¡FUUU!


Cita de: Mary Shaw
Menos del 10% del código tienen que ver directamente con el propósito del sistema; el resto tiene que ver con la entrada y salida, validación de datos, mantenimiento de estructuras de datos y otras labores domésticas



[/cent

Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Ayuda] Mostrar nick ususarios online
« Respuesta #4 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.
Twitter: @JoakoM010



Desconectado MaNuX

  • PHPero Avanzado
  • ****
  • Mensajes: 385
  • Karma: 4
  • Sexo: Masculino
  • PHP & MySQL
    • Ver Perfil
    • CliKys
Re:[Ayuda] Mostrar nick ususarios online
« Respuesta #5 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.


Desconectado iStocker

  • PHPer@ Fijo
  • ***
  • Mensajes: 104
  • Karma: 6
  • ~ єssєитιαʟ ~
    • Ver Perfil
Re:[Ayuda] Mostrar nick ususarios online
« Respuesta #6 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.
¡FUUU!


Cita de: Mary Shaw
Menos del 10% del código tienen que ver directamente con el propósito del sistema; el resto tiene que ver con la entrada y salida, validación de datos, mantenimiento de estructuras de datos y otras labores domésticas



[/cent

Desconectado MaNuX

  • PHPero Avanzado
  • ****
  • Mensajes: 385
  • Karma: 4
  • Sexo: Masculino
  • PHP & MySQL
    • Ver Perfil
    • CliKys
Re:[Ayuda] Mostrar nick ususarios online
« Respuesta #7 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 = ", ";
    }


Desconectado iStocker

  • PHPer@ Fijo
  • ***
  • Mensajes: 104
  • Karma: 6
  • ~ єssєитιαʟ ~
    • Ver Perfil
Re:[Ayuda] Mostrar nick ususarios online
« Respuesta #8 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.
¡FUUU!


Cita de: Mary Shaw
Menos del 10% del código tienen que ver directamente con el propósito del sistema; el resto tiene que ver con la entrada y salida, validación de datos, mantenimiento de estructuras de datos y otras labores domésticas



[/cent

Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Ayuda] Mostrar nick ususarios online
« Respuesta #9 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.
Twitter: @JoakoM010



Desconectado MaNuX

  • PHPero Avanzado
  • ****
  • Mensajes: 385
  • Karma: 4
  • Sexo: Masculino
  • PHP & MySQL
    • Ver Perfil
    • CliKys
Re:[Ayuda] Mostrar nick ususarios online
« Respuesta #10 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


Desconectado MaNuX

  • PHPero Avanzado
  • ****
  • Mensajes: 385
  • Karma: 4
  • Sexo: Masculino
  • PHP & MySQL
    • Ver Perfil
    • CliKys
Re:[Ayuda] Mostrar nick ususarios online
« Respuesta #11 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.


Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Ayuda] Mostrar nick ususarios online
« Respuesta #12 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?.
Twitter: @JoakoM010



Desconectado MaNuX

  • PHPero Avanzado
  • ****
  • Mensajes: 385
  • Karma: 4
  • Sexo: Masculino
  • PHP & MySQL
    • Ver Perfil
    • CliKys
Re:[Ayuda] Mostrar nick ususarios online
« Respuesta #13 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.


Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Ayuda] Mostrar nick ususarios online
« Respuesta #14 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.

Twitter: @JoakoM010