Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom galera....
Continuando a minhas estréia aqui, vou continuar as aulas de scripts em php, vejo que a galera gostou do Relatório de Segurança no Codigo Fonte...
Mas bem, desta vez vou ensinar a fazer um simples... Bate Papo
Não me preocupei em fazer uma bela interface e talz, pois, estou aqui msm para mostrar como funciona a gravação dos arquivos...
Utilizei nesse sistema de Chat as funções F (fopen, fread, fclose),
é meio estranho utiliza-las mas depois você acustuma...
O Bate Papo (CHAT) funciona em dois arquivos, à index e o arquivo gravar.php, o arquivo gravar.php eh o que faz todo o trabalho, mas ele naum tem nada de +...
Mãos a Obra...
Arquivo index.htm
<html><head> <title>Bate Papo</title></head><body><form name="Gravar" action="gravar.php" method="post" target="chat"><table><tr> <td>Nick: <input type="text" name="nick"></input></td></tr><tr> <td>Texto: <input type="text" name="texto"></input><input type="submit" value="Enviar"></input></td></tr><tr> <td><iframe name="chat" src="chat.txt" width="468" height="300">Utilize um navegador mais recente!</iframe></td></tr></table></body></html>
Bem vocês devem ter percebido que fiz um simples forumulario HTML, a não ser um simples jogo de campos, veja detalhadamente:
<form name="Gravar" action="gravar.php" method="post" target="chat">
1º - se especifica ao form o nome dele que no caso é Gravar
2º - define o arquivo que fará a ação de gravar, no caso gravar.php
3º - definimos o metodo de envio do formulario, se você usar get pegará o conteudo do gravar.php, mas no nosso caso usaremos post, para enviar o conteúdo desse form ao gravar.php
4º - target="chat" define que ele executará a ação no iframe de nome chat, isso como alvo do form.
<input type="text" name="nick">
define que será um campo de texto e seu nome eh "nick"
<input type="text" name=""texto>
define que será um campo de texto e seu nome eh "texto"
e logo apos um <input type=submit> para enviar o formulario
......
Bem até aqui nem um segredo, mas é importante ressaltar todas as partes do sistema, o mais importante de tudo eh o nome dos campos, pois teremos de especificar logo a frente o campo a ser pego o conteúdo, e para isso usaremos o nome dele
Agora o .php que faz o milagre
Arquivo gravar.php
<?php// Pra escrever no arquivo usamos o seguinte codigo:$nick = $_POST['nick']; // Pega o que está escrito no campo de nome nick \\$texto = $_POST['texto']; // Pega o que está escrito no campo de nome texto \\$abre = fopen("chat.txt", "a"); // Abre o arquivo chat.txt com a opção a (abre para leitura e escrita) \\if($abre) {fwrite($abre,"$nick : $texto \n");// Se conseguir abrir o arquivo ele escreve o conteudo com fwrite \\}fclose($abre);// Fecha o arquivo \\?><meta http-equiv="refresh" content="5; url=chat.txt"> <!-- Redireciona para o arquivo chat.txt //-->
Bem é isso um sistema bem simples, não precisa nem de um banco de dados... mas naum se eskeça se for utiliza-lo em um servidor web, de CHMOD 666 no arquivo chat.txt ^^ :) :) :) :D
Bom no proximo post vou ensinar a colocar smilies no chat!!!
Falowe......
muito showsoh na boa eu tenho que atualizar a page depois que posto nehseguinte da pa fazer tpquando o cara da um submit ou seja enva o texto apos 2 segundos ele da um refresh na page?pq senau me utenho que fica atualizando e o os outros tb masm uito show cara parabens
AKIRAnão estou muito familiarizado com o <iframes> ... tem como fazer com que a janela acrescente um retorno do carro automaticamente... estou testando o script, que está funcionando bem quando o texto é curto, mas quando o texto é longo, como é normal em um suporte online, a linha não retorna, mas faz a tela rolar... fica feio isto... tem como inserir algum atributo no <iframes> para fazer isto?
Rutger,
Para quebrar a linha, basta adicionar à tag <iframe> o seguinte código: scrolling="no"... portanto, o código do iframe fica assim:
<iframe name="chat" src="chat.txt" width="468" height="300" scrolling="no">Utilize um navegador mais recente!</iframe>vdepizzoljá tentei isto, mas não consegui... PIOR... fui fazer uma pesquisa na w3c e descobri que esta opção não existe... creio que precisarei manipular a variaável $texto que gera o arquivo texto gravado de forma a obter um texto ORIGFINALMENTE formatado... só assim o texto apresentado as linhas com quebras... talvez ate transforme o arquivo txt em html, para poder inserir TAGs de controle como <BR>... paciência... obrigado pela tentativa... a proposito, da forma que você colocou, as barras de rolagem somem, mas o texto continua sem quebra... como uma unica linha...pena, né?!Rutger
não tem q criar o arquivo chat.txt?
claro que tem de criar o CHAT.TXT mas o problema é que se tiver alguma sentença muito longa, ele não quebra a linha e precisa rolar para ler...não tem jeito assim... tem de elaborar mais...obrigado a todos que discutiram as minhas questoies...Rutger!
Rutger,
se você fizer uma função onde incluísse o código
Include "chat.txt";E, criasse uma variável onde seu valor fosse o nome da função, e depois colocaria a váriavel que você criou para mostrar na página... Então, o texto txt iria para o modo html e teria formatação...
O interessante também seria se você fizesse por exemplo a página chat.php onde ficaria essa váriavel e a function... assim o texto formatado ficaria dentro do iframe no index.htm...
-------------
Eu testei esse chat e percebi que todas as mensagens que escrevo nunca somem... não haveria algum jeito destas sumirem?
T+
Bem vcs estão pedindo as seguintes coisas:Rolagem automaticaAuto RefreshGravação do Chat.txt de baixo para cimabem vamos láa rolagem automatica é soh voc~es procurarem no codigo fonte do bate-papo da uol q temquanto ao auto refresh eh soh usar esse código<iframe name="chat" src="chat.php" width="468" height="300" scrolling="no">Utilize um navegador mais recente!</iframe>no arquivo chat.php coloque assim<?phpinclude(chat.txt);?>e depois um meta refreshe quanto a gravação modifique na opção fopen ao ives de "a" para "w+" pronto..ateh a proximaAgora vamos ver como fica tudo:
Arquivo INDEX.HTM /////////////////////////////
**PHP** [/tr][tr]<html>
<head>
<title>Chat em PHP - Simples</title>
</head>
<body>
<form name="Gravar" action="gravar.php" method="post" target="chat">
<table>
<tr>
<td>Nick: <input type="text" name="nick"></input></td>
</tr>
<tr>
<td>Texto: <input type="text" name="texto"></input><input type="submit" value="Enviar"></input></td>
</tr>
<tr>
<td><iframe name="chat" src="chat.php" width="468" height="300">Utilize um navegador mais recente!</iframe></td>
</tr>
</table>
</form>
</body>
</html>
[/tr]
Arquivo CHAT.PHP /////////////////////////////
**PHP** [/tr][tr]<?echo "<font face=/"Arial/" size=/"2/">";
include(chat.txt);
echo "</font>";
?>
<meta http-equiv="refresh" content="5; url=chat.php">
[/tr]
Arquivo GRAVAR.PHP /////////////////////////////
**PHP** [/tr][tr]<?php// Pra escrever no arquivo usamos o seguinte codigo:
$nick = $_POST['nick'];
// Pega o que está escrito no campo de nome nick \\
$texto = $_POST['texto'];
// Pega o que está escrito no campo de nome texto \\
$abre = fopen("chat.txt", "w+");
// Abre o arquivo chat.txt com a opção a (abre para leitura e escrita) \\
if($abre) {
fwrite($abre,"$nick : $texto \n");
// Se conseguir abrir o arquivo ele escreve o conteudo com fwrite \\
}
fclose($abre);
// Fecha o arquivo \\
?>
<meta http-equiv="refresh" content="5; url=chat.txt">
<!-- Redireciona para o arquivo chat.txt //-->
[/tr]
Agora falta a rolagem automática (não achei nada do tipo) e fazer com que a mensagem suma quando você entra de novo...
:)
Valeu
alguém sabe tirar o "barulhindo" do refresh?
Seria uama boa, sem refresh!!!! hehehe
Qual o sistema q uol, terra, etc.. utiliza?
Qual o sistema q uol, terra, etc.. utiliza?
CGI, parece!!!! :huh:
Olá pessoal,uma pequena duvida/observação: No documento index.htm, nao deveriamos "fechar" a tag <form>??? :unsure:
sim !
Olá Amigos,Fico feliz em saber que o meu tópico ainda está ajudando muitos usuarios... este é um chat simples como está no titulo do tópico, fica a gosto e perseverança de vocês melhora-lo.Abraços, ao Prescot, ao Walace, ao Keitaro, e a todos os outros usuarios daqui, quando eu tiver um tempo livre venho dar um help nas duvidas...
Para que a página abra no final, uma idéia legal seria colocar uma âncora com o nome FINAL no final do CHAT.PHP e, na hora de fazer o REFRESH, colocar:
**PHP** [/tr][tr]<meta http-equiv="refresh" content="5; url=chat.php#final">[/tr]
:)para nao dar refresh tem que usar o loop while e depois o sleepmas isso seria com mysql e esse sistema nao usa mysql
consegui fazer sem refresh(na verdade nao existe sem refresh)
faz os arquivos assim:
vazio.php
**PHP** [/tr][tr]<?phpinclude "chat.php";
?>
[/tr]
chat.php
**PHP** [/tr][tr]<?echo "<font face=/"Arial/" size=/"2/">";
include(chat.txt);
echo "</font>";
?>
<meta http-equiv="refresh" content="3; url=vazio.php">
[/tr]
Aqi funcionou beleza, agora voces testem ae
muito bom caramas tpou tenta nao usar a palavra chat nos forms auhauatava lendo uam pesquisa num site de TI e muiats empresas barram a palavra chat :P inclusive odne ue trabalho por causa do proxy, vou usar ele so vo substituir a plavra chat por suporte pois vou usalo para suporte onlinevalew cara