Um Simples Chat sem Banco de Dados
Em form.php além de enviar as mensagens e deve constar todos os outros usuários presentes no chat. Os usuários do chat estão contidos no arquivo log.txt (daqui a pouco eu explico como criá-lo). Bem veja o nosso formulário de envio de mensagens:
No arquivo log.txt contem muitos registros repetidos. Usando um método de ordenação os registros repetidos são retirados.
Bem agora nossa mensagem será processada em lform.php, segue o código :
A variável $nome (variável global ) e as variáveis $dest e $msg (variáveis do formulário) são concatenadas na variável $mesg. Ela vai ser adicionada ao arquivo reg.txt, de modo que a mensagem mais recente seja a última.
As quatro últimas linhas são para o retorno para o formulário do chat.
Nota : a única forma de atualizar a lista de usuários é enviando uma mensagem.
<html> <head> <meta http-equiv="Pragma" content="no-cache"> </head> <body> <table width="100%" cellpadding="0" cellspacing="0" border="1" bordercolor="#000000"> <tr> <td align="center"> <form action="lform.php" method="post" name="frmMsg"> <table width="600" border="0"> <tr> <td> <?php echo $nome; ?> <p> <select size="1" name="dest"> <option selected>TODOS</option> <?php $arq="log.txt"; $fd = fopen ($arq, "r"); $i=0; while (!feof ($fd)) { $buffer = fgets($fd, 4096); $pieces = explode("|",$buffer); $reg[$i] =$pieces[0]; $i++; } fclose ($fd); for($k=0;$k < ($i-1);$k++){ $comp=$reg[$k]; for($j=$k+1;$j < $i;$j++){ if($comp==$reg[$j]){$reg[$j]="";} } } for($s=0;$s < $i;$s++){ $x=$reg[$s]; if ($x !="") { echo "<option value=\"$x\">$x</option>"; } } ?> </select><input size="44" name="msg"><input type="submit" value="Enviar" name="Enviar"> </p> </td> </tr> </table> </form> </td></tr> </table> </body> </html>
No arquivo log.txt contem muitos registros repetidos. Usando um método de ordenação os registros repetidos são retirados.
Bem agora nossa mensagem será processada em lform.php, segue o código :
<?php session_start(); $mesg="<p>$nome fala para $dest : $msg</p>\n\n"; $arq="reg.txt"; $i=0; $fd = fopen ($arq, "r"); while (!feof ($fd)) { $buffer = fgets($fd, 500); $reg[$i] =$buffer; $i++; } fclose ($fd); $fp_a=fopen($arq,"w"); for($k=0;$k < $i;$k++){ fputs($fp_a,$reg[$k]); } fputs($fp_a,$mesg); fclose($fp_a); echo "<html><head>"; echo "<meta http-equiv=\"Refresh\" "; echo "content=\"0;url=form.php\">"; echo "</head></html>"; ?>
A variável $nome (variável global ) e as variáveis $dest e $msg (variáveis do formulário) são concatenadas na variável $mesg. Ela vai ser adicionada ao arquivo reg.txt, de modo que a mensagem mais recente seja a última.
As quatro últimas linhas são para o retorno para o formulário do chat.
Nota : a única forma de atualizar a lista de usuários é enviando uma mensagem.
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
Abraço
Daniel
28/07/2010 5:19pm
(~14 anos atrás)
Você fala que logo a frente vai falar sobre o log.txt e não fala =(.
Resultado, nã funcionou aqui.
Resultado, nã funcionou aqui.
03/06/2009 4:56pm
(~15 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]
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
(~22 anos atrás)
Gostei muito do chat, mas estou ansioso para ver a versão com MySQL.
25/04/2002 11:46pm
(~22 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á.
Estou tentanto criar uma coisa com iframe e javascript,mas ainda chego lá.
20/04/2002 5:12pm
(~23 anos atrás)
Fatal error: Call to undefined function session_register() in /home/u145043887/public_html/entra.php on line 3
pq?????