• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

docas

Lista de utilizadores online

11 mensagens neste tópico

Boas malta

Estou a criar um site em PHP onde existe uma área de registo e depois uma área para fazer login.

Se o utilizador introduzir o username e password correctos vai para uma página onde estão todos os usernames dos utilizadores online.

Existe um link para fazer logout e se isso acontecer o utilizador é retirado daquela página, mas nem toda a gente carrega nos links de Logout. A maior parte das pessoas fecham logo o browser.

Na BD MySQL existe uma tabela de utilizadores e uma coluna com o nome de 'Online' e se o utilizador fizer login correctamente o valor da coluna 'Online' passa para 'True'.

O que eu cria era um script que identifica-se quem fechou a conexão ao servidor para puder retirar o username da lista.

Eu utilizo sessoes e penso que esse era o melhor método para retirar o user da lista, mas não encontro nada que me possa ajudar...

Aqui vai o codigo fonte:

LOGIN.PHP

<?php
/*--------------------------------------MySQL---------------------------------------------
-----------------------------------------------------------------------------------------*/

$servidor_sql = "localhost";
$user_sql = "user";
$pass_sql = "pass";


mysql_connect($servidor_sql,$user_sql,$pass_sql);
mysql_select_db("users");
/*-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------*/

$login_user = $_POST["usernameL"];
$login_pass = $_POST["passwordL"];

if ($login_user == "" || $login_pass == "")
{
echo "<div align='center'><br>Para fazer login é necessário inserir o utilizador e a password.</div>";
}
else
{

/*-------------------------Verificação do Username e da Password---------------------------
-----------------------------------------------------------------------------------------*/
$sql_user = "SELECT Username FROM utilizadores WHERE Username='$login_user'";
$sql_pass = "SELECT Password FROM utilizadores WHERE Password='$login_pass'";

$query_user = mysql_query($sql_user);
$query_pass = mysql_query($sql_pass);

$verificar_user = mysql_fetch_object($query_user);
$verificar_pass = mysql_fetch_object($query_pass);


if ($verificar_user == "" || $verificar_pass == "")
{
echo "<br><div align='center'>Utilizador ou password errados.</div>";
}
else
{
session_start();
$_SESSION['user'] = $login_user;
$_SESSION['pass'] = $login_pass;
mysql_query("UPDATE utilizadores SET Online = 'True' WHERE Username = '$login_user'");
header("Location: usersonline.php");
}
}
/*-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------*/
?>

USERSONLINE.PHP

<?php
session_start();
/*--------------------------------------MySQL---------------------------------------------
-----------------------------------------------------------------------------------------*/

$servidor_sql = "localhost";
$user_sql = "user";
$pass_sql = "pass";

$con_mysql = mysql_connect($servidor_sql,$user_sql,$pass_sql);
mysql_select_db("users");

/*-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------*/
$sql_online = "SELECT Online FROM utilizadores";
$sql_user = "SELECT Username FROM utilizadores";
$query_online = mysql_query($sql_online);
$query_user = mysql_query($sql_user);

$num = 0;
while ($num < mysql_numrows($query_user))
{

$ok_online = mysql_result($query_online,$num,"Online");
$ok_user = mysql_result($query_user,$num,"Username");

if ($ok_online == "True")
echo $ok_user."<br>";

$num++;
}
?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas!eu por acaso tenho um projecto pa apresentar daki a uns tempos e gostava de por login e registo...mas o meu stor tmb n ajuda mt!,se podesses ajudar.....ja vi k aki ja ta alguma koisa por onde possa pegar!...na percebo kuase nd de php....pois axo k nem a 1 mes tou a dar php e na foi nd de jeito..e isto n se aprende do dia pa noite:S enfim.....se poderes dar umas dicas ou isso....agradecia =)

tnks man =)=)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem eu não te vou puder dar agora grandes explicações sobre PHP, porque isso até tens de ser tu a ter iniciativa de aprender, mas posso-te aconselhar artigos e bons tutorials para leres e depois tirares as tuas dúvidas.

Um dos melhores sites para aprender linguagens de programação  "online" é www.w3schools.com. Na minha opinião é dos melhores sites que existem para os que estão a começar com linguagens web. Tens de perceber um pouco de inglês mas os bons tutorials estão todos em inglês, por isso vai-te preparando...

http://www.w3schools.com/php/default.asp  -  O básico de PHP (também tens aqui um pouco de MySQL)

http://www.w3schools.com/sql/default.asp  -  MySQL

http://www.phpfreaks.com/tutorials/41/0.php  -  Sessions

http://www.php.net/  -  Se tiveres dúvidas quanto a alguma function podes procurar mais informações aqui

Procura também pelo fórum. Tem por aí muita coisa...

Fica bem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma sugestão era em vez de online=true ser online=microtime()

basicamente a ideia é guardar a data e hora do ultimo acesso, e para saberes quem esta on-line vez por exemplo os utilizadores que o ultimo acesso foi a menos de 5 minutos.

obviamente que terias que actualizar a bd  em cada página

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boa explicação. Implementei com sucesso num projecto pessoal  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estou com um bocado de pressa por isso não consegui ler todo post... continuando...

O mês passado eu criei um script de login muito bom mesmo, como vi que queres algo haver com login e registro acho podes tirar algumas ideias do codigo do meu script...

CLIQUE AQUI!

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estou com um bocado de pressa por isso não consegui ler todo post... continuando...

O mês passado eu criei um script de login muito bom mesmo, como vi que queres algo haver com login e registro acho podes tirar algumas ideias do codigo do meu script...

CLIQUE AQUI!

Cumps

posta aki no forum.... e indenta...pois não é facil ler o que esta lá...  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tentei postar aqui no forúm, mas é muito grande  :P  Só não consigo entender como é que uns conseguem ler e outros não.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tentei postar aqui no forúm, mas é muito grande  :P  Só não consigo entender como é que uns conseguem ler e outros não.

coloca os ficheiros em anexo....  :dontgetit:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Epa... gostava de poder ajudar mas nunca fiz isso... mas estou certo que há tutoriais a dizer como se faz isso.

Só duas ou tres pequenas coisas:

1.aconselho o uso da função md5() para guardar a pssa na bd.

2.Podes fazer só um pedido à bd em vez de dois e usar o mysql_fetch_array

3.A ligação à base da dados está assim um pouco a martelo

Usa uma proteção deste tipo:



<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'password';

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die                      ('Error connecting to mysql');

$dbname = 'petstore';
mysql_select_db($dbname);
?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tentei postar aqui no forúm, mas é muito grande  :cheesygrin:  Só não consigo entender como é que uns conseguem ler e outros não.

coloca os ficheiros em anexo....  :dontgetit:

Porquê que tenho que colocar aqui o codigo se podem ver ali ? Vê o codigo ali quem quiser quem não  quiser problema seu.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora