Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rick RJ

Chat Atendimento On Line

Recommended Posts

Pessoal,

 

qual o comando que posso usar para limpar um arquivo .dat que armazena as mensagens do chat?

Preciso limpar se não quando alguem acessa o chat aparece as mensagens antigas.

 

Usei este chat:

 

Chat

 

Se alguem quiser ver o que acontece e so acessar

 

Teste

 

Agradeço a ajuda.

 

rjrick.

Compartilhar este post


Link para o post
Compartilhar em outros sites

10ª Regra

É proibido o post de mensagens com o objetivo de evidenciar o tópico, tornando-o primeiro da lista de tópicos (up), tal como mensagens repetitivas e/ou que não condizem com o assunto do tópico em questão (flood). Tais mensagens serão excluídas e o usuário advertido por MP.

este sistema foi desenvolvido por voce?? Você entende um pouco de php? se sim mande o codigo que exibe a tela do chat.

 

att:

Tullius

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, tem várias maneiras ^_^

Uma delas é apenas deletar o arquivo, já que provavelmente o script do chat cria outro...

unlink("arquivo.dat");

Outra solução seria abrir o arquivo, e escrever 'nada' por cima dele.

$fp = fopen("arquivo.dat", "w");
fwrite("", $fp);
fclose($fp);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tullis,

 

se você ler direitinho vai ver que eu apenas adaptei para um site, não esquecendo e claro de dar ao autor, que disponibilizou os arquivos, o merito merecido.

 

<script type="text/javascript" language="JavaScript">

//<![CDATA[

function clearmessage(){

document.smiletagform.message.value=document.smiletagform.message_box.value;

document.smiletagform.message_box.value="";

}

//]]>

</script>

<style type="text/css">

<!--

.Estilo1 { color: #FFFFFF;

font-size: 10px;

}

-->

</style>

 

 

 

<table height="13" width="100%" border="0">

<tbody>

<tr>

<td width="66%" height="200" align="center" valign="top" bgcolor="#A11B23"><p><strong><font color="#FFFFFF" size="4" face="Verdana, Arial, Helvetica, sans-serif">Atendimento on line </font></strong></p>

<p><font color="#FFFFFF"><strong><font size="4" face="Verdana, Arial, Helvetica, sans-serif">Monografias Rio</font></strong></font><br>

<br />

</p>

<iframe name="iframetag" marginwidth="0"

marginheight="0" src="view.php" width="400"

height="330">Your Browser must support IFRAME to view this page correctly</iframe>

<br><br>

<span class="Estilo1">Copyright © 2008 - www.monografiasrio.com.br - Todos os direitos reservados / All rights reserved.</span></td>

<td width="34%" align="left" valign="top" bgcolor="#A11B23">

<form name="smiletagform" method="post"

action="post.php" target="iframetag">

<table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td><div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong><font color="#FFFFFF">Para

conversar, preencha o formulário abaixo e clique no enviar.</font><br>

<br>

</strong></font></div></td>

</tr>

</table>

<font size="2" face="Verdana, Arial, Helvetica, sans-serif"><br />

</font>

<table border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td><div align="left"><font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica, sans-serif">Seu Nome</font><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><br />

<input type="text" name="name"

maxlength="30" />

<br />

<br />

<br />

<font color="#FFFFFF">Menssagem</font><br />

<textarea name="message_box" rows="8">

</textarea>

<br />

<input type="hidden" name="message" value="" />

<input type="submit" name="submit" value="Enviar"

onclick="clearmessage()" />

<input type="reset"

name="reset" value="limpar" />

</font></div></td>

</tr>

</table>

<font size="2" face="Verdana, Arial, Helvetica, sans-serif"><br />

</font>

</form></td>

</tr>

</tbody>

</table>

</body>

</html>

 

Ta ai.

 

Obrigado pela ajuda,

 

rjrick.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@/\

Esse aí é o código HTML, no caso, o tullius ta pedindo o código PHP, que está nos arquivos 'post.php' e 'view.php' pelo que eu vi.

justamente.

 

att:

Tullius

Compartilhar este post


Link para o post
Compartilhar em outros sites

post.php

 

<?php

/****************************************************************************

* *

* Copyright © 2002 SmileTAG Development Team *

* http://smiletag.netstat.org/ *

* *

* SmileTAG is free software; you can redistribute it and/or modify *

* it under the terms of the GNU General Public License as published by *

* the Free Software Foundation; either version 2 of the License, or *

* (at your option) any later version. *

* *

* SmileTAG is distributed in the hope that it will be useful, *

* but WITHOUT ANY WARRANTY; without even the implied warranty of *

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *

* GNU General Public License for more details. *

* *

****************************************************************************/

 

//get user input and remove the whitespaces

$name = trim($_POST['name']);

$mail_or_url = trim($_POST['mail_or_url']);

$message = trim($_POST['message']);

$message_box = trim($_POST['message_box']);

 

//if the browser doesn't support javascript, $message will empty

//so we have to get the message from $message_box

if(!empty($message_box))

$message=$message_box;

 

require './conf/global.conf.php';

require './include/functions.inc.php';

 

//make sure that user fill the name and the message,also check the length of the message

if( (!empty($name)) && (!empty($message)) && (strlen($message)<$MAX_LENGTH) ){

 

//replace all newline with space

$name = str_replace("\n"," ",$name);

$message = str_replace("\n"," ",$message);

$mail_or_url = str_replace("\n"," ",$mail_or_url);

 

//replace '||' with space

//cause we use '||' as delimiter when storing all data to the file

$name = str_replace('||',' ',$name);

$message = str_replace('||',' ',$message);

$mail_or_url = str_replace('||',' ',$mail_or_url);

 

//filter all slashes and html tags

$name = htmlspecialchars(stripslashes($name));

$message = htmlspecialchars(stripslashes($message));

$mail_or_url = htmlspecialchars($mail_or_url);

 

 

$hour = date ('g:i:s A');

$date = date ('F d, Y');

$ipaddress = $_SERVER["REMOTE_ADDR"];

 

 

if(strtoupper($BOARD_PROTECTION) == 'ON'){

if(host_banned($ipaddress) or nick_banned($name)){

die("Your nick or IP address is banned from this board!");

}

 

}

 

//concat all data before saved to file with '||' as delimiter

$buffer[0] = $name.'||'.$mail_or_url.'||'.$hour.'||'.$date.'||'.$ipaddress.'||'.$message."\n";

$file = @fopen($MESSAGE_FILE,'r') or die("Could not open file $MESSAGE_FILE or permission denied");

$line = 1;

 

flock($file,1);

while( (!feof($file)) && ($line < $MAX_MESSAGE) ){

$buffer[$line] = fgets($file,4096);

$line++;

}

flock($file,3);

fclose($file);

 

$file = @fopen($MESSAGE_FILE,'w') or die("Could not open file $MESSAGE_FILE or permission denied");

flock($file,2);

for($i=0; $i<count($buffer);$i++){

fputs($file,$buffer[$i]);

}

flock($file,3);

fclose($file);

}

 

header('Location: http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/view.php');

 

 

?>

 

view.php

 

<?php

/****************************************************************************

* *

* Copyright © 2002 SmileTAG Development Team *

* http://smiletag.netstat.org/ *

* *

* SmileTAG is free software; you can redistribute it and/or modify *

* it under the terms of the GNU General Public License as published by *

* the Free Software Foundation; either version 2 of the License, or *

* (at your option) any later version. *

* *

* SmileTAG is distributed in the hope that it will be useful, *

* but WITHOUT ANY WARRANTY; without even the implied warranty of *

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *

* GNU General Public License for more details. *

* *

****************************************************************************/

 

require './conf/global.conf.php';

require './conf/smiley.conf.php';

require './include/header.inc.php';

 

//prepare the IMG tag for each smiley pattern

for($i=0;$i<count($PATTERN);$i++)

$IMAGE_TAG[$i] = '<img alt="'.stripslashes($PATTERN[$i]).'" border="0" src="images/'.$IMAGE[$i].'" />';

 

$file = @fopen($MESSAGE_FILE,'r') or die("Could not open file $MESSAGE_FILE or permission denied");

$background = $MSG_BGCOLOR_1;

 

while(!feof($file)){

flock($file,1);

$buffer = fgets($file,4096);

flock($file,3);

 

if(!$buffer) break;

 

//data[0] <= name ,data[1] <= mail_or_url ,data[2] <= hour ,data[3] <= date

//data[4] <= ipaddress ,data[5] <= message

$data = explode('||',$buffer);

 

//replace all smilies pattern into their IMG tag

for($i=0;$i<count($PATTERN);$i++)

$data[5] = eregi_replace($PATTERN[$i],$IMAGE_TAG[$i],$data[5]);

 

if($background == $MSG_BGCOLOR_1)

$background = $MSG_BGCOLOR_2;

else

$background = $MSG_BGCOLOR_1;

 

if(ereg("@",$data[1]))

echo '<tr><td bgcolor="'.$background.'"><span class="name" title="'.$data[3].' - '. $data[4].'"><a href="mailto:'.$data[1].'"><span class="name">'.$data[0].'</span></a>['.$data[2].']</span><br />'.$data[5].'</td></tr>';

else{

if(substr($data[1],0,7) != 'http://')

$data[1] = 'http://'.$data[1];

echo '<tr><td bgcolor="'.$background.'"><span class="name" title="'.$data[3].' - '. $data[4].'"><a target="_blank" href="'.$data[1].'/"><span class="name">'.$data[0].'</span></a>['.$data[2].']</span><br />'.$data[5].'</td></tr>';

}

 

}

fclose($file);

 

echo '</table></body></html>';

?>

 

Ta ai...

 

Obrigado pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, agora já ajudo bastante...

Agora me explique quando você quer que as mensagens do chat sumam? De X em X minutos, cada hora que um novo usuário entrar... como?

 

 

Edit: vou ter que sair, só volto amanha... espero que alguém te ajude ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Renan,

 

tem que ser no inicio, o cara acessou e ja entra a tela branca. Carregou ja limpa a pagina.

 

Valeu...

Opa, desculpe a demora. Beleza, mas pode ocorrer de entrar dois usuários ao mesmo tempo, e um apagar as mensagens do outro... mas isso já fica meio complicado pra resolver, então vo fazer assim mesmo. Pode ser que dê erro, porque vou fazer usando sessions aqui. Se der erro nas sessions, provavelmente é porque alguma página está carregando um código HTML antes da página view.php, aí não sei como posso te ajudar.

 

<?php
/****************************************************************************
* *
* Copyright © 2002 SmileTAG Development Team *
* http://smiletag.netstat.org/ *
* *
* SmileTAG is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* SmileTAG is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
****************************************************************************/
require './conf/global.conf.php';

session_name('validate'); //nome da session
session_start();  //inicia a session
if(!isset($_SESSION['validate'])){  //checa se a variavel ja foi setada, para ver se o arquivo ja foi deletado uma vez
$_SESSION['validate'] = 1;  //seta a variavel da session para checar na proxima atualizaçao de precisa deletar o arquivo das mensagens ou nao

unlink($MESSAGE_FILE); // deleta o arquivo
}

require './conf/smiley.conf.php';
require './include/header.inc.php';

//prepare the IMG tag for each smiley pattern
for($i=0;$i<count($PATTERN);$i++)
$IMAGE_TAG[$i] = '<img alt="'.stripslashes($PATTERN[$i]).'" border="0" src="images/'.$IMAGE[$i].'" />';

$file = @fopen($MESSAGE_FILE,'r') or die("Could not open file $MESSAGE_FILE or permission denied");
$background = $MSG_BGCOLOR_1;

while(!feof($file)){
flock($file,1);
$buffer = fgets($file,4096);
flock($file,3);

if(!$buffer) break;

//data[0] <= name ,data[1] <= mail_or_url ,data[2] <= hour ,data[3] <= date
//data[4] <= ipaddress ,data[5] <= message
$data = explode('||',$buffer);

//replace all smilies pattern into their IMG tag
for($i=0;$i<count($PATTERN);$i++)
$data[5] = eregi_replace($PATTERN[$i],$IMAGE_TAG[$i],$data[5]);

if($background == $MSG_BGCOLOR_1)
$background = $MSG_BGCOLOR_2;
else
$background = $MSG_BGCOLOR_1;

if(ereg("@",$data[1]))
echo '<tr><td bgcolor="'.$background.'"><span class="name" title="'.$data[3].' - '. $data[4].'"><a href="mailto:'.$data[1].'"><span class="name">'.$data[0].'</span></a>['.$data[2].']</span><br />'.$data[5].'</td></tr>';
else{
if(substr($data[1],0,7) != 'http://')
$data[1] = 'http://'.$data[1];
echo '<tr><td bgcolor="'.$background.'"><span class="name" title="'.$data[3].' - '. $data[4].'"><a target="_blank" href="'.$data[1].'/"><span class="name">'.$data[0].'</span></a>['.$data[2].']</span><br />'.$data[5].'</td></tr>';
}

}
fclose($file);

echo '</table></body></html>';
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Renam,

 

não limpou, deu o seguinte erro:

 

 

Warning: unlink(messages.dat) [function.unlink]: Permission denied in /home/monograf/public_html/chat/view.php on line 25

 

Alguma ideia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Renam,

 

não limpou, deu o seguinte erro:

 

 

Warning: unlink(messages.dat) [function.unlink]: Permission denied in /home/monograf/public_html/chat/view.php on line 25

 

Alguma ideia?

Opa, tenho sim...

Sabe se tem algum .htaccess controlando o acesso das páginas?

Se você tiver acesso FTP ao site, tenta dar um chmod 755 ou 777 na pasta que tá o arquivo das mensagens...

 

Ps: meu nome é com N no final, Renan e não Renam :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Renan,

 

o que ocorreu foi o seguinte, o código deletou o arquivo messeger.dat. liberei a permissão da pasta para 777 e renviei o arquivo messages.dat. Tive que liberar a permissão do messages.dat para 777. E ficou tudo do mesmo jeito.

 

Da uma olhada:

 

http://www.monografiasrio.com.br/chat/index.html

 

O que podemos fazer?

 

 

Desculpe pela grafia do nome, o M fica do ladinho do N.

 

 

Obrigado pela ajuda.

 

rjrick.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, ocorreu o que eu já esperava... eu acho :mellow:

O código não criou um outro arquivo de mensagem...

 

Tente por o arquivo assim:

<?php
/****************************************************************************
* *
* Copyright © 2002 SmileTAG Development Team *
* http://smiletag.netstat.org/ *
* *
* SmileTAG is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* SmileTAG is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
****************************************************************************/
require './conf/global.conf.php';

session_name('validate'); //nome da session
session_start();  //inicia a session
if(!isset($_SESSION['validate'])){  //checa se a variavel ja foi setada, para ver se o arquivo ja foi deletado uma vez
$_SESSION['validate'] = 1;  //seta a variavel da session para checar na proxima atualizaçao de precisa deletar o arquivo das mensagens ou nao

unlink($MESSAGE_FILE); // deleta o arquivo

$f = @fopen($MESSAGE_FILE, "x"); // cria outro arquivo
fwrite($f, "");
fclose($f);
}

require './conf/smiley.conf.php';
require './include/header.inc.php';

//prepare the IMG tag for each smiley pattern
for($i=0;$i<count($PATTERN);$i++)
$IMAGE_TAG[$i] = '<img alt="'.stripslashes($PATTERN[$i]).'" border="0" src="images/'.$IMAGE[$i].'" />';

$file = @fopen($MESSAGE_FILE,'r') or die("Could not open file $MESSAGE_FILE or permission denied");
$background = $MSG_BGCOLOR_1;

while(!feof($file)){
flock($file,1);
$buffer = fgets($file,4096);
flock($file,3);

if(!$buffer) break;

//data[0] <= name ,data[1] <= mail_or_url ,data[2] <= hour ,data[3] <= date
//data[4] <= ipaddress ,data[5] <= message
$data = explode('||',$buffer);

//replace all smilies pattern into their IMG tag
for($i=0;$i<count($PATTERN);$i++)
$data[5] = eregi_replace($PATTERN[$i],$IMAGE_TAG[$i],$data[5]);

if($background == $MSG_BGCOLOR_1)
$background = $MSG_BGCOLOR_2;
else
$background = $MSG_BGCOLOR_1;

if(ereg("@",$data[1]))
echo '<tr><td bgcolor="'.$background.'"><span class="name" title="'.$data[3].' - '. $data[4].'"><a href="mailto:'.$data[1].'"><span class="name">'.$data[0].'</span></a>['.$data[2].']</span><br />'.$data[5].'</td></tr>';
else{
if(substr($data[1],0,7) != 'http://')
$data[1] = 'http://'.$data[1];
echo '<tr><td bgcolor="'.$background.'"><span class="name" title="'.$data[3].' - '. $data[4].'"><a target="_blank" href="'.$data[1].'/"><span class="name">'.$data[0].'</span></a>['.$data[2].']</span><br />'.$data[5].'</td></tr>';
}

}
fclose($file);

echo '</table></body></html>';
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Renan,

 

não criou, fiz as mudanças, reenviei o código acima e o arquivo message.dat pro servidor. Ta funcionando mas não limpa as mensagens anteriores. Da uma olhadinha. Alguma ideia do esta ocorrendo?

 

Obrigado pela ajuda.

 

rjrick

Compartilhar este post


Link para o post
Compartilhar em outros sites

Renan,

 

não criou, fiz as mudanças, reenviei o código acima e o arquivo message.dat pro servidor. Ta funcionando mas não limpa as mensagens anteriores. Da uma olhadinha. Alguma ideia do esta ocorrendo?

 

Obrigado pela ajuda.

 

rjrick

Opa, está funcionando... o código vai limpar as mensagens a cada hora que um novo usuário entrar... assim ele não poderá ver as mensagens do outro usuário...

Você quer que ele limpe as mensagens toda hora que ele dê um refresh na página? Mas aí não daria nem tempo de você ler elas....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Renan,

 

ta funcionando, ficou muito bom. Acho que poderia limpar a cada 15 minutos. So tenho a te agradecer a ajuda. Me da mais uma luz, tem como soar um bip quando entrar uma mensagem?

 

Obrigado pela ajuda.

 

rjrick

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.