+6

Um Simples Chat sem Banco de Dados

criado por Rodrigo Romano Moreira em 13/04/2002 6:53pm
Sem banco de dados o nosso trabalho fica difícil, o único modo de atualizar as mensagens é o refresh. O código ler.php é simples, segue abaixo :

<?php
session_start
();
include
("./user.php");

echo
'<html><head><meta http-equiv="Refresh" content="10"></head><body>';

$arq
="reg.txt";
$fd
= fopen ($arq, "r");
while (!feof ($fd)) {
    $buffer
= fgets($fd,4096);
    echo $buffer
;
}
fclose
($fd);
?>
</body>
</html>

O código é pequeno e além de ler as mensagens ele tem outra função. Você pode notar que é incluido um script de nome user.php. O nome não é coincidência, era um script que mostrava os usuários on-line (há um script parecido aqui no PHPBRASIL). Fiz algumas alterações de modo a cada minuto eu tenha uma lista atualizada dos usuários do chat. O código segue abaixo :

<?php
$timer
= 1;
$filename
= "log.txt";

if (!$datei) $datei = dirname(__FILE__)."/$filename";
$time
= @time();
$ip
= $nome;
$string
= "$ip|$time\n";
$a
= fopen("$filename", "a+");
fputs
($a, $string);
fclose
($a);

$timeout
= time()-(60*$timer);

$all
= "";
$i
= 0;
$datei
= file($filename);
for ($num = 0; $num < count($datei); $num++) {
    $pieces
= explode("|",$datei[$num]);
   
if ($pieces[1] > $timeout) {
        $all
.= $pieces[0];
        $all
.= ",";
   
}
    $i
++;
}

$all
= substr($all,0,strlen($all)-1);
$arraypieces
= explode(",",$all);
$useronline
= count(array_flip(array_flip($arraypieces)));

$dell
= "";
for ($numm = 0; $numm < count($datei); $numm++) {
    $tiles
= explode("|",$datei[$numm]);
   
if ($tiles[1] > $timeout) {
        $dell
.= "$tiles[0]|$tiles[1]";
   
}
}

if (!$datei) $datei = dirname(__FILE__)."/$filename";
$time
= @time();
$ip
= $nome;
$string
= "$dell";
$a
= fopen("$filename", "w+");
fputs
($a, $string);
fclose
($a);
?>

Como eu falei, sem banco de dados fica difícil. O refresh não é a melhor solução e para fazer um chat igual ao UOL ou o do Terra é necessário banco de dados. O acesso ao banco de dados é mais rápido que a leitura de um arquivo e como as funções flush e sleep, você pode criar um chat sem refresh.

Espero daqui a algumas semanas lançar um tutorial de um chat com banco de dados e que também eu tenha dado uma luz sobre esse assunto.

Rodrigo Romano Moreira

Comentários:

Mostrando 1 - 10 de 27 comentários
Alex disse:
oha o erro que esta dando quando coloco o apelido


Fatal error: Call to undefined function session_register() in /home/u145043887/public_html/entra.php on line 3


pq?????
17/09/2013 10:58pm (~11 anos atrás)

Daniel disse:
Estou tendo problemas para inserir uma senha de Admin no Chat, dá o seguinte erro: '[var..now]&fase=[var._GET.fase]' e a tela seguinte da como Não Encontrada. Alguem pode me ajudar a arrumar.

Abraço
Daniel
28/07/2010 5:19pm (~14 anos atrás)

Moizes disse:
Você fala que logo a frente vai falar sobre o log.txt e não fala =(.

Resultado, nã funcionou aqui.
03/06/2009 4:56pm (~16 anos atrás)

No ler.php as mensagens são carregadas de cima para baixo.. então as ultimas mensagens enviadas nunca são vistas ok!
eu adicionei alguns codigos de html amais q podem contornar isso:--
<?php
session_start();
include ("./user.php");
?>
<html><head><meta http-equiv="Refresh" content="10;URL=ler.php#FIM"></head><body>
<?
$arq="reg.txt";
$fd = fopen ($arq, "r");
while (!feof ($fd)) {
$buffer = fgets($fd,4096);
echo $buffer;
}
fclose ($fd);
?><a name="FIM"></a>
</body>
</html>
--
o #FIM fará q a janela sempre abra no final de todo o conteudo já digitado..
No mais muito bom o código..
Valeu

[s]
05/03/2004 8:26am (~21 anos atrás)

Estou tendo problemas com a versão Mysql,na hora que funcionar,eu envio o tutorial.
26/04/2002 5:36pm (~23 anos atrás)

Evandro Silva disse:
Gostei muito do chat, mas estou ansioso para ver a versão com MySQL.
25/04/2002 11:46pm (~23 anos atrás)

Quarta ou quinta ,lanço o tutorial e o chat em mysql.
23/04/2002 7:16am (~23 anos atrás)

Só seu servidor usar PHP.
22/04/2002 12:34pm (~23 anos atrás)

Todas as funções estão prontas ,exceto a funções lê as mensagens.
Estou tentanto criar uma coisa com iframe e javascript,mas ainda chego lá.
20/04/2002 5:12pm (~23 anos atrás)

Está em desenvolvimento,mas aqui estou apanhando.
19/04/2002 11:33pm (~23 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)