Comunidad PHPeros
Lenguajes => PHP => Mensaje iniciado 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.
<?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 '<em style="color:#444; text-shadow:none">No hay usuarios conectados</em>';
?>
Haber si pueden echarme una mano. Gracias.
-
Verifica que al cerrar la sesión el usuario actualice el campo online a 0.
-
Podrias echar una mano para hacerlo. Gracias.
-
Podrias echar una mano para hacerlo. Gracias.
UPDATE users SET online = 0 WHERE id = 1;
-
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.
-
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.
-
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.
-
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:
if ($i == $nb[3])
{
$sep = "";
}
else
{
$sep = ", ";
}
-
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:
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.
-
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.
-
Por una parte me a quedado claro, pero nose como crear el código para que funcione :S
-
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:
$i++;
if ($i < count(3))
{
$sep = ", ";
} else {
$sep = ", ";
}
Y aquí el de desconexión:
@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.
-
¿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?.
-
¿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.
-
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:
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).
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.
-
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:
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).
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...
$users=mysql_query("SELECT COUNT(*) AS total FROM usuarios") or die (mysql_error());
$total=mysql_result($users,0,"total");
time() + (5 * 60 * 5); {}