zombie 0 Denunciar post Postado Setembro 23, 2010 PEssoal, bom tenho um sistema de autenticação, gostaria de puxar os nomes dos usuarios online (quando logados) no sistema, como poderia estar fazendo esse processo? ex. o kra vai la e faz o login, dai na tela (restrita), vai estar os nomes de todos que estão online naquele momento, tipo assim: Usuários online: Fábio, André, Pedro...etc alguem tem uma ideia? sugestão? obrigado desde ja. abs Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Setembro 23, 2010 quando ele fizer o login , tu manda guardar o nome , ou login dele em uma sessao , entao tu so puxa novamente a sessao nome , digamos; /*. . . ./teus codigos*/ session_start(); $_SESSION["nome"] = $nome; pode fazer assim na pag de exibição: session_start(); if(isset($_SESSIO["nome"])){ $nome = $_SESSION["nome"]; } pode usar essa como include , que facilita muito , e dpois eh so chamar sempre a variavel nome que ele te retorna o que foi salvo na sessao.. Felipe Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Setembro 23, 2010 eai tudo joia kra? então quando o usuario loga, eu puxo o nome dele para dar as boas vindas. só que como eu faria para puxar o nome de todos os logados no sistema? dai quando a pessoa sair some o nome, cada um loga com os dados diferente. alguma dica? tipo de forum mesmo, quando o usuario ta logado fica o nome la, dai quando ele sai, some o nome. abs vlwww Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Setembro 24, 2010 pessoal, to tentando assim: $tempmins = 15; $ip=$REMOTE_ADDR; if(mysql_num_rows(mysql_query("SELECT * FROM usuariosonline WHERE ip='".$ip."'"))>0) { mysql_query('UPDATE usuariosonline SET time="'.time().'" WHERE ip="'.$ip.'"'); } else { mysql_query('INSERT INTO usuariosonline (ip,time) VALUES ("'.$ip.'","'.time().'")'); } mysql_query('DELETE FROM usuariosonline WHERE time<'.(time()-($tempmins*60))); $select = mysql_num_rows(mysql_query("SELECT * FROM usuariosonline WHERE ip='".$ip."'")); while( $i = mysql_fetch_row( $select ) ) { $sql_usuario = mysql_query("SELECT * FROM usuarioscadastro WHERE id='".$i[1]."' LIMIT 1"); while( $c = mysql_fetch_object( $sql_usuario ) ) { echo $c['usuario'].'está online'; } } porem ta dando erro, Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in alguem pode me dar uma "luz", obrigado abs Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Setembro 24, 2010 Por favor, leia: http://forum.imasters.com.br/index.php?/topic/375800-orientacoes-para-uma-boa-participacao/ sempre, sempre enqnto em ambiente de desenvolvimento, execute as tuas queries, com: or die( mysql_error() ); $query = mysql_query("SELECT * FROM usuariosonline WHERE ip='{$ip}'")or die( mysql_error() ); if( mysql_num_rows( $query ) ){ Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Setembro 24, 2010 opa, peço desculpa pelos erros. bom tentei assim e a tela fica branca, o que pode estar errado? $tempmins = 15; $ip=$REMOTE_ADDR; if(mysql_num_rows(mysql_query("SELECT * FROM usuariosonline WHERE ip='".$ip."'"))>0) { mysql_query('UPDATE usuariosonline SET time="'.time().'" WHERE ip="'.$ip.'"'); } else { mysql_query('INSERT INTO usuariosonline (ip,time) VALUES ("'.$ip.'","'.time().'")'); } mysql_query('DELETE FROM usuariosonline WHERE time<'.(time()-($tempmins*60))); $query = mysql_query("SELECT * FROM usuariosonline WHERE ip='{$ip}'")or die( mysql_error() ); if( mysql_num_rows( $query ) ){ { $sql_usuario = mysql_query("SELECT * FROM usuarioscadastro WHERE id='".$i[1]."' LIMIT 1"); while( $c = mysql_fetch_object( $sql_usuario ) ) { echo $c['usuario'].'está online'; } } no caso quando ele mostrar o osuario online, ele mostrará somente 1 ou to errado? como faria para separar por virgula todos os que estiverem online?? atensiosamente Compartilhar este post Link para o post Compartilhar em outros sites
wolfphw 60 Denunciar post Postado Setembro 24, 2010 Tipo eu mudaria umas coisas no seu codigo, tivaria o campo IP da sua tabela e colocaria o campo id_usuario para você poder identificar realmente o usuario online, pois dessa sua forma se 2 ou mais usuários tiverem vindo da mesma REDE eles terao o mesmo IP. <?php $tempmins = 15; $id = $_GET['id_usuario']; // pega o ID do usuário ao invez do IP if(mysql_num_rows(mysql_query("SELECT * FROM usuariosonline WHERE id_usuario='".$id."'"))>0) { mysql_query("UPDATE usuariosonline SET time='".time()."' WHERE id_usuario='".$id."'"); } else { mysql_query("INSERT INTO usuariosonline (id_usuario,time) VALUES ('".$id."','".time()."')"); } // vai apagar os usuários que passaram do tempo limite, // assim mantendo apenas os usuários que realmente estão logados mysql_query("DELETE FROM usuariosonline WHERE time<'".(time()-$tempmins)."'"); $sql_usuario = mysql_query("SELECT UC.usuario FROM usuariosonline UO, usuarioscadastro UC WHERE UO.id_usuario=UC.id"); while ($c = mysql_fetch_object($sql_usuario)) { echo $c['usuario'].", "; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Setembro 24, 2010 entendi, fiz a alteração porem a pagina fica toda branca, nenhuma mensagem de erro. o codigo ta assim, o que pode estar errado? $tempmins = 15; $ip=$REMOTE_ADDR; if(mysql_num_rows(mysql_query("SELECT * FROM usuariosonline WHERE ip='".$ip."'"))>0) { mysql_query('UPDATE usuariosonline SET time="'.time().'" WHERE ip="'.$ip.'"'); } else { mysql_query('INSERT INTO usuariosonline (ip,time) VALUES ("'.$ip.'","'.time().'")'); } mysql_query('DELETE FROM usuariosonline WHERE time<'.(time()-($tempmins*60))); $query = mysql_query("SELECT * FROM usuariosonline WHERE ip='{$ip}'")or die( mysql_error() ); if( mysql_num_rows( $query ) ){ { $sql_usuario = mysql_query("SELECT * FROM usuarioscadastro"); while( $c = mysql_fetch_object( $sql_usuario ) ) { echo $c['usuario'].', '; } } Compartilhar este post Link para o post Compartilhar em outros sites
wolfphw 60 Denunciar post Postado Setembro 24, 2010 Eu ainda faria mais modificação.. nao criaria essa sua tabela de usuarioonline.. teria apenas a de usuario cadastrado e acrescentaria apenas o cmapo time nela.. dai só atualizaria ela.. e verificaria apenas usuários com time superior ao limite.. Assim: <?php $tempmins = 15; $id = $_GET['id_usuario']; // pega o ID do usuário ao invez do IP mysql_query("UPDATE usuarioscadastro SET time='".time()."' WHERE id='".$id."'"); $sql_usuario = mysql_query("SELECT * FROM usuarioscadastro WHERE time >= '".(time()-$tempmins)."'"); while ($c = mysql_fetch_object($sql_usuario)) { echo $c['usuario'].", "; } ?> Sua página esta dando erro pq você esta abrindo 2 { no IF if( mysql_num_rows( $query ) ){ { Sua página esta dando erro pq você esta abrindo 2 { no IF if( mysql_num_rows( $query ) ){ { Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Setembro 24, 2010 vou tentar aqui, mais no caso eu utilizo $_SESSION, nas mensagens de boas vindas to puxando assim: <?php echo $row_loja['usuario']; ?> no caso como eu puxaria nessa linha, para nao ter erro. $id = $_GET['usuario']; // pega o ID do usuário ao invez do IP vlw desde ja Editando: tirei { e deu erro em uma linha que tinha }, dai se tiro da pagina branco e se deixo o erro permanece. Editando Novamente: fiz assim: $sql_usuario = mysql_query("SELECT * FROM usuarioscadastro"); while( $c = mysql_fetch_object( $sql_usuario ) ) { echo $c->usuario.', '; } e apareceu todos os nomes da tabela de cadastrados, não era para aparecer somente quem estivece logado? ou to fazendo errado...... Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Setembro 24, 2010 Como eu faço para pegar o id do usuario logado no sistema? <?php $tempmins = 15; $id = $_GET['id_usuario']; // pega o ID do usuário ao invez do IP mysql_query("UPDATE usuarioscadastro SET time='".time()."' WHERE id='".$id."'"); $sql_usuario = mysql_query("SELECT * FROM usuarioscadastro WHERE time >= '".(time()-$tempmins)."'"); while ($c = mysql_fetch_object($sql_usuario)) { echo $c->usuario.', '; } Compartilhar este post Link para o post Compartilhar em outros sites
wolfphw 60 Denunciar post Postado Setembro 24, 2010 como você disse que esta utilizando SESSION passa para o ID o valor da SESSION do usuario... $id = $_SESSION["id_do_usuario"]; Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Setembro 26, 2010 pensei que estava puxando errado, porque quando faço isso abaixo não aparece nada, o que pode estar errado no codigo? $tempmins = 15; $id = $_SESSION['usuario']; mysql_query("UPDATE usuarioscadastro SET time='".time()."' WHERE id='".$id."'"); $sql_usuario = mysql_query("SELECT * FROM usuarioscadastro WHERE time >= '".(time()-$tempmins)."'"); while ($c = mysql_fetch_object($sql_usuario)) { echo $c->usuario.', '; } Pessoal, to fazendo assim: $tempmins = 15; $ip=$REMOTE_ADDR; if(mysql_num_rows(mysql_query("SELECT * FROM usuariosonline WHERE ip='".$ip."'"))>0) { mysql_query('UPDATE usuariosonline SET time="'.time().'" WHERE ip="'.$ip.'"'); } else { mysql_query('INSERT INTO usuariosonline (ip,time) VALUES ("'.$ip.'","'.time().'")'); } mysql_query('DELETE FROM usuariosonline WHERE time<'.(time()-($tempmins*60))); $query = mysql_query("SELECT * FROM usuariosonline WHERE ip='{$ip}'")or die( mysql_error() ); if( mysql_num_rows( $query ) ){ } $sql_usuario = mysql_query("SELECT * FROM usuarioscadastro"); while( $c = mysql_fetch_object( $sql_usuario ) ) { echo $c->usuario.', '; } só que os dados que esta exibindo são os nomes de todos os cadastrados, gostaria de mostrar somente os que estiverem online, como poderia fazer essa alteração? será que se eu gravar o nome do usuario logado na tabela de usuariosonline, e exibir eles, daria certo? depois como eu iria deletar os inativo? e como faria para inserir o usuario logado? abs e obrigado Galera, to tentando aqui, fiz dessa forma, mais nao aparece nada e nem erro. o que pode estar errado? $tempmins = 1; $id = $_SESSION['usuario']; mysql_query("UPDATE usuarioscadastro SET time='".time()."' WHERE id='".$id."'"); $sql_usuario = mysql_query("SELECT * FROM usuarioscadastro WHERE time >= '".(time()-$tempmins)."'"); while ($c = mysql_fetch_object($sql_usuario)) { echo $c->usuario.', '; } Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Setembro 27, 2010 $sql_usuario = mysql_query("SELECT * FROM usuarioscadastro WHERE time >= '".(time()-$tempmins)."'")or die( mysql_error() ); echo $sql_usuario, '<br />'; if( !mysql_num_rows( $sql_usuario ) ) echo 'Nenhum registro encontrado!!'; Compartilhar este post Link para o post Compartilhar em outros sites
wolfphw 60 Denunciar post Postado Setembro 27, 2010 faz isso aki... joga o seu SQl dentro de uma variavel e imprima ela.. $tempmins = 1; $id = $_SESSION['usuario']; mysql_query("UPDATE usuarioscadastro SET time='".time()."' WHERE id='".$id."'"); // $sql_usuario = mysql_query("SELECT * FROM usuarioscadastro WHERE time >= '".(time()-$tempmins)."'")or die( mysql_error() ); $sql_usuario = "SELECT * FROM usuarioscadastro WHERE time >= '".(time()-$tempmins)."'"; echo $sql_usuario, '<br />'; // if( !mysql_num_rows( $sql_usuario ) ) echo 'Nenhum registro encontrado!!'; tenta jogar oque ele imprimiu na tela direto no seu banco para evr se vai dar algum erro... Tipo dá uma olhada nesse meu exemplo que eu fiz para você ter uma idéia de como funciona + ou - essas paardas de on-line tabela CREATE TABLE `usuario` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nome` varchar(255) COLLATE latin1_swedish_ci NULL DEFAULT NULL, `time` varchar(255) COLLATE latin1_swedish_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) ); index.php <?php session_start(); require("conexao.php"); if (isset($_POST['id'])) { $id = $_POST['id']; mysql_query("UPDATE usuario SET time='".time()."' WHERE id='".$id."'"); } ?> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("td#online").load("online.php?acao=online"); loop(); }); function loop() { <?php if (isset($_POST['id'])) { ?> $("td#online").load("online.php?acao=atualiza&id="+<?php echo $id; ?>); <?php } else { ?> $("td#online").load("online.php?acao=online"); <?php } ?> // FAZ O LOOP SER CHAMADO A CADA 5 SEGUNDOS setTimeout('loop()', 5000); } </script> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td> <form id="form1" name="form1" method="post" action=""> id <input type="text" name="id" id="id" /> <input type="submit" name="button" id="button" value="Submit" /> </form> </td> </tr> <tr> <td>Usuarios on-line:</td> </tr> <tr> <td id="online"> </td> </tr> </table> online.php <?php require("conexao.php"); $acao = $_GET['acao']; if ($acao == "atualiza") { $id = $_GET['id']; mysql_query("UPDATE usuario SET time='".time()."' WHERE id='".$id."'"); $time = time()-10; $sql = mysql_query("SELECT * FROM usuario WHERE time>='".$time."'"); while ($rows = mysql_fetch_array($sql)) { echo $rows["nome"].", "; } } if ($acao == "online") { $time = time()-10; $sql = mysql_query("SELECT * FROM usuario WHERE time>='".$time."'"); while ($rows = mysql_fetch_array($sql)) { echo $rows["nome"].", "; } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Setembro 27, 2010 Eai tudo joia, obrigado pelo help. quando fiz a alteração aqui deu esse erro: Resource id #6 Nenhum registro encontrado!! oque pode ser? $tempmins = 1; $id = $_SESSION['usuario']; mysql_query("UPDATE usuarioscadastro SET time='".time()."' WHERE id='".$id."'"); $sql_usuario = mysql_query("SELECT * FROM usuarioscadastro WHERE time >= '".(time()-$tempmins)."'")or die( mysql_error() ); echo $sql_usuario, '<br />'; if( !mysql_num_rows( $sql_usuario ) ) echo 'Nenhum registro encontrado!!'; criei o campo na tabela usuarioscadastro `time` varchar(12) NOT NULL, EDITANDO: mudei aqui uma coisa, dai apareceu o dado da session que no caso é o email, mais olhei na tabela e nao foi inserido nada no "time" e tambem alem de exibir o email mostrou tb o Nenhum registro encontrado!! $tempmins = 1; $id = $_SESSION['usuario']; mysql_query("UPDATE usuarioscadastro SET time='".time()."' WHERE id='".$id."'"); $sql_usuario = mysql_query("SELECT * FROM usuarioscadastro WHERE time >= '".(time()-$tempmins)."'")or die( mysql_error() ); echo $usuario, '<br />'; if( !mysql_num_rows( $sql_usuario ) ) echo 'Nenhum registro encontrado!!'; dai no caso para mostrar o nome, como eu alteraria tambem, porque to usando email para logar no sistema, dai teria que mudar para exbir o nome do usuario. atenciosamente. Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Setembro 27, 2010 $tempmins = 1; $id = $_SESSION['usuario']; mysql_query("UPDATE usuarioscadastro SET time='".time()."' WHERE id='".$id."'"); $sql_usuario = mysql_query("SELECT * FROM usuarioscadastro WHERE time >= '".(time()-$tempmins)."'")or die( mysql_error() ); echo $usuario, '<br />'; dessa forma ele me mostra o nome que esta logado, porem no time não ta inserindo nada, dai fiz o que o amigo falou de imprimir na tela e jogar pro bd mais nao deu erro nenhum, no caso nesse codigo se colocar um comando para inserir no bd, será que resolveria? porem será que depois que tiver inserido o time no bd, ele vai deletar ou vai ficar la o tempo? agradeço desde ja PS: to dando uma olhada no codigo postado acima, para dar uma estudada. Compartilhar este post Link para o post Compartilhar em outros sites
zombie 0 Denunciar post Postado Setembro 28, 2010 tentei assim, mais ele deleto tudo que tinha cadastrados todos usuarios. $tempmins = 1; $id = $_SESSION['usuario']; if(mysql_num_rows(mysql_query("SELECT * FROM usuarioscadastro WHERE time='".$time."'"))>0) { mysql_query('UPDATE usuarioscadastro SET time="'.time().'" WHERE time="'.$time.'"'); } else { mysql_query('INSERT INTO usuarioscadastro (time) VALUES ("'.time().'")'); } mysql_query('DELETE FROM usuarioscadastro WHERE time<'.(time()-($tempmins*60))); mysql_query("UPDATE usuarioscadastro SET time='".time()."' WHERE id='".$id."'"); $sql_usuario = mysql_query("SELECT * FROM usuarioscadastro WHERE time >= '".(time()-$tempmins)."'")or die( mysql_error() ); echo $usuario, '<br />'; a intensão é inserir o tempo no banco, e quando o usuario sair (deslogar) apagar o tempo no banco de dados, mostrar os usuarios que estiverem logado no sistema. será que esse não é o caminho? o que pode estar errado? agradeço desde ja... Compartilhar este post Link para o post Compartilhar em outros sites