Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jairo Bankhardt

[Resolvido] Mostrar nome dos usuários online

Recommended Posts

Gente...

já pesquisei, procurei, já li a matéria do i-master e nada...

 

todo script que encontro só faz a contagem.

 

Que tal desenvolvermos a partir do script abaixo um script que mostre o NICK dos usuários que estão logados?

 

 include "config.php";  $timestamp=time();   $timeout=time()-300; // valor em segundos   $result=mysql_db_query($bancodedados, "INSERT INTO useronline VALUES ('$timestamp','$REMOTE_ADDR','$PHP_SELF')");  $result=mysql_db_query($bancodedados, "DELETE FROM useronline WHERE timestamp<$timeout");   $result=mysql_db_query($bancodedados, "SELECT DISTINCT ip FROM useronline") or die(mysql_error());   $usuarios=mysql_num_rows($result);   mysql_close();   echo"$usuarios usuários(S) conectados no site";

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu nunca fiz um script desse, mas eu seguiria o seguinte raciocinio:1 - banco de dados com cadastros2 - login das pessoas nos sites, para sabermos qm esta online3 - registro deste em um outro db, que armazena apenas id's de qm esta online3a - neste ponto você pode fazer um mix do script acima.4 - a cada exibicao de pagina, ele faz um join do banco de dados de qm esta online com quem esta cadastro, e exibir tais nomes.acho que eh so isso, agora o resto eh "maos a obra..." B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok Keitaro, sua lógica pode estar correta, o problema é que eu não consigo descobrir como fazer o seu ítem 3.Vamos partir do princípio que o sistema já está desenvolvido para autenticar os usuários através do login.Como "pegar" os ids (ou qualquer outra informação, neste caso o que interessa é o nick) de quem se logou e gravar num banco de dados??

Compartilhar este post


Link para o post
Compartilhar em outros sites

uhnnn, vejamos como posso explicar:Tipo assim, saca tabela de seções? pra controlar quem está On no site?no index.php (por exemplo) q chama as demais pg's você adiciona um insert para gravar os dados IP, time, nome de quem está Online atualmente, antes de adicionar, você faz uma verificação se sessão ou cookie foram criados, se foi você pega os dados deste e manda pra tabela de sessão, depois na hora de exibir os dados é só filtrar... É dificil explicar, mas é bem simples o sistema, vou ver se acho algo pronto, algum end e posto...Abraço....

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP [/tr][tr]<?

$con = @mysql_connect("localhost","username","password") or die(mysql_error());

$sel = @mysql_select_db("minha_bd") or die(mysql_error());

$ip = $_SERVER['REMOTE_ADDR'];

/* Se estiver Logado apaga os guest's com o msm ip... */

$TOU_LOGADO = false;

if(isset($_SESSION["username"]))

{

$TOU_LOGADO = true;

}

 

if(isset($TOU_LOGADO))

{

$apaga_g = mysql_query("DELETE FROM usersonline WHERE tipo='

n' and ip='$ip'");

$tipo = "s";

$nick = $_SESSION["username"];

} else {

/* Senão apaga os membros com o msm ip... */

$apaga_m = mysql_query("DELETE FROM usersonline WHERE tipo='

s' and ip='$ip'");

$tipo = "n";

$nick = "";

}

/* Insere e Conta o total de Users Online... */

$timeoutseconds = 100;

$timestamp = time();

$timeout = $timestamp-$timeoutseconds;

$apaga = mysql_query("DELETE FROM usersonline WHERE timestamp<$timeout");

$insere = mysql_query("INSERT INTO usersonline VALUES('

$timestamp','$ip','$tipo','$nick')");

/* Para os Visitantes do Site... */

$g_total = mysql_query("SELECT DISTINCT ip FROM usersonline where tipo='

n'");

$g_online = mysql_num_rows($g_total); [/code]

echo "Guest'

s: ".$g_online."<br>";

/* Para os Membros do Site... */

$u_total = mysql_query("SELECT DISTINCT ip,username FROM usersonline where tipo='s'");

$u_online = mysql_num_rows($u_total);

echo "Membros: ".$u_online."<br><br>";

/* Se houver membros mostra-os... */

if($u_total != 0)

{

while($r = mysql_fetch_array($u_total))

{

$username = $r["username"];

echo $username."<br>";

}

}

?>

[/tr]

 

codigo sql:

CREATE TABLE `usersonline` (  `timestamp` int(15) NOT NULL default '0',  `ip` varchar(40) NOT NULL default '',  `tipo` set('s','n') default NULL,  `username` varchar(250) NOT NULL default '',  PRIMARY KEY  (`timestamp`),  KEY `ip` (`ip`)) TYPE=MyISAM;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado a todos que contribuíram!!! Ajuda valiosa.SnakeX, funciona perfeitamente. Agora consegui entender como o script funciona. Valeu.Só para deixar registrado às pessoas que procurarem este script, sempre é bom lembrar: inicializar a sessão no início da página.Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

de nada :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola pessoal, como eu deveria fazer para poder usar este codigo, porem de forma que ao inves de ele me mostrar apenas os nikes de quem esta on line ele me mostre todos os nikes cadastrados e coloque ao lado de cada um o nome on line e off line respectivamente. Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse codigo ficou bom..

Mas ainda é falho..

Precisa de um start automatico desse script pelo menos de 1 em 1 min... pois o usuario com a tela aberta sem clicar em nada, vai ficar offline sem estar offline..

Alguem tem essa solução para integrar nesse script ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse codigo ficou bom..

Mas ainda é falho..

Precisa de um start automatico desse script pelo menos de 1 em 1 min... pois o usuario com a tela aberta sem clicar em nada, vai ficar offline sem estar offline..

Alguem tem essa solução para integrar nesse script ?

 

acho que ajax resolveria...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.