Boa tarde galera, tive um pequeno problema aqui em adaptar um sistema de chat aqui.
Vocês devem conhecer o chat.php parecido com o facebook... gtalk...
Abaixo minha página online.php (que mostra todos os usuários onlines.. e cria uma SESSION lá no final:
$_SESSION['username'] = $s;
O meu problema está na criação da SESSION... Se vários usuários conectarem a esta página.php, a session que será utilizada será a ÚLTIMA... alguém tem alguma ideia ?
tem como criar uma nova página para cada usuário que conectar no chat...
Entenderam ou ficou muito confuso ?
Obrigado.
<?php
//faça a inclusão da página de conexão criada logo acima
include "conexao.php";
session_start();
//determina um tempo para a variável $tempo
$tempo = time();
if (!empty($_SERVER["HTTP_CLIENT_IP"]))
{
//check for ip from share internet
$ip = $_SERVER["HTTP_CLIENT_IP"];
}
elseif (!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
{
// Check for the Proxy User
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}
else
{
$ip = $_SERVER["REMOTE_ADDR"];
}
//faz uma consulta para verificar se o ip já existe no banco de dados
$verifica = mysql_query("SELECT * FROM online WHERE ip ='$ip'");
//retorna a quantidade de linhas da consulta ou seja, pode retornar 0 ou 1 linha
$linhas = mysql_num_rows($verifica);
//se não existir o ip no banco ele grava um com um tempo determinado
if($linhas == 0)
{
// gravando o IP e o tempo no DB
$acrescenta = mysql_query("INSERT INTO online (ip, tempo) VALUES ('$ip','$tempo')");
}
else
{
// se o IP já existe ele o pega e atualiza o tempo no DB no IP selecionado
//pega o IP retornado da consulta
$ip = mysql_result($verifica,0,'ip');
//faz um update para o registro do IP existente
$atualiza = mysql_query("UPDATE online SET tempo ='$tempo' WHERE ip='$ip'");
}
//deleta a linha que não foi atualizada no tempo de 400 segundos
mysql_query("DELETE FROM online WHERE tempo <'$tempo'".-"400");
//faz uma consulta para mostrar quantos estão on-line
$online = mysql_query("SELECT * FROM online");
//retorna o número de linhas que será a quantidade de usuários on-line nesse momento
$agora = mysql_num_rows($online);
if($agora==1){
//para ficar mais amigável se tiver somente 1 pessoa on-line
echo "Apenas eu estou on-line";
}
else {
//exibe todos os usuários que estão on-line
echo "Temos ".$agora." usuarios on-line.";
}
$sql = "select * from online";
$rs = mysql_query($sql);
if(mysql_num_rows($rs) > 0){
while ($row = mysql_fetch_array($rs)){
$findMat = "select MatFuncionario from acesso where IP = '".$row['ip']."' order by Codigo desc limit 1";
$rsMat = mysql_query($findMat);
$rowMat = mysql_fetch_array($rsMat);
$findNome = "select nome, usuario from funcionario where matricula = '".$rowMat['MatFuncionario']."'";
$rsNome = mysql_query($findNome);
$rowNome = mysql_fetch_array($rsNome);
$nick = $rowNome['usuario'];
echo "<br/><a href=java script:void(0) onclick=java script:chatWith('".$nick."')>".$rowNome['nome']."</a>";
$s = $rowNome['nome'];
$_SESSION['username'] = $s;
}
}
?>
Pergunta
rsmoraes
Boa tarde galera, tive um pequeno problema aqui em adaptar um sistema de chat aqui.
Vocês devem conhecer o chat.php parecido com o facebook... gtalk...
Abaixo minha página online.php (que mostra todos os usuários onlines.. e cria uma SESSION lá no final:
O meu problema está na criação da SESSION... Se vários usuários conectarem a esta página.php, a session que será utilizada será a ÚLTIMA... alguém tem alguma ideia ? tem como criar uma nova página para cada usuário que conectar no chat... Entenderam ou ficou muito confuso ? Obrigado.Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.