Ir para conteúdo

Arquivado

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

Carcleo

Chat - Não consigo entender

Recommended Posts

Pessoal.

 

Boa Tarde!

 

Após vaias e varias tentativas de entender, sem sussesso, decidi pedir a ajuda de voces.

 

peguei aqui na internet o chat do Romano e observei que ele funciona bem.

Porem, uma coisa me chamou a atenção.

 

Quando mando mensagem privada para o usuario TODOS, eu, o usuario ue envia, vejo a mensagem reservada. Porem, os outros estinatarios não veem a mensagem.

 

Porem, quando a mensagem é endereçada a cada um deles em privado. Ai, eles veem sim a mensagem.

 

Se enviar a mensagem a TODOS sem ser privada todos veem mas se for privada, só que enviou ve.

Como corrigir isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui esta a função que lista as mensagens:


/**
* Lista as mensagens da sala.
**/
  function msgs() {
     $i = "0";
  $msgs=array();
     $consulta = mysql_query("SELECT * FROM msg WHERE ((rem='".$this->nome."' OR dest='".$this->nome."' OR tipo='pub') && date > '$_SESSION[date]' && sala='".$this->sala."') ORDER BY date ASC;", $this->dbh);
     while ($row = mysql_fetch_array($consulta)) {
        $msgs[$i]["tipo"]  = $row["tipo"];
	 $msgs[$i]["msg"]  = $row["msg"];
        $msgs[$i]["som"]  = $row["som"];
        $msgs[$i]["dest"] = $row["dest"];
        $msgs[$i]["rem"]  = $row["rem"];
        $_SESSION['date'] = $row["date"];
        $i++;
     }
     mysql_free_result($consulta);
     return $msgs;
  }

Aqui esta o filtro

<?php

####################################
#                                  #
#  MODIFICADO POR: JRF WEBMASTER   #
#  VERSÃO ATUAL:   8.0             #
#  DATA:           01/08/2006      #
#                                  #
####################################

include_once("./config.php");
include_once("./global.php");
include_once("./biblioteca/tbs_class.php");
$banco = new chat;
$banco->dados($_GET['uid']);
if($banco->block($_GET['uid'])){
 $target="vai();";
}else{
 $target="";
}
if (empty($_SESSION['date'])) {
$_SESSION['date'] = 0;
}
if (empty($_SESSION['header']) OR $_SESSION['header']!= $_GET['uid']) {
$arquivo = "./templates/".$banco->config['modelo']['val']."/principal.htm";
$header = fopen($arquivo, "r");
$lido = fread($header, filesize($arquivo));
fclose($header);
$limpa = addslashes($lido)."\n\n";
$limpa = str_replace("\t", "", $limpa);
$limpa = str_replace("\r", "", $limpa);
$limpa = str_replace("\n", "\\n", $limpa);
$inicio = $limpa;
$_SESSION['header'] = $_GET['uid'];
}
$model = new clsTinyButStrong ;
$model->LoadTemplate("./templates/".$banco->config['modelo']['val']."/inferior.htm") ; 
$msgs  = $banco->msgs();
$total = count($msgs);
$cont  = $banco->cont("TODOS");
$str   = $ext = "";
$str  .= (!empty($inicio)) ? $inicio : "";
for ($i = "0"; $i < $total; $i++) {
$tipo  = $msgs[$i]["tipo"]; 
$rem  = $msgs[$i]["rem"];
$dest = $msgs[$i]["dest"];
$mensagem = addslashes($msgs[$i]["msg"]);
$som = $msgs[$i]["som"];

if (empty($_SESSION['ignora'][$rem]) && empty($_SESSION['ignora'][$rem])) {
 $para = ($dest == $banco->nome) ? ' bgcolor=\"#cccccc\"' : "";
 $codigo = '<table width=\"100%\" border=\"0\" cellspacing=\"5\" cellpadding=\"2\"><tr><td'.$para.'>'.$mensagem.'"+PlaySound("'.$som.'")+"</td></tr></table>'."\n";
 $codigo = str_replace("\t", "", $codigo);
 $codigo = str_replace("\r", "", $codigo);
 $codigo = str_replace("\n", "\\n", $codigo);
 $str .= $codigo;

}
if (empty($inicio) && ($som == "entra" OR $som == "saida" OR $cont != $_SESSION['cont'])) {
 $ext .= "window.parent.nomes.location.reload();\n";
 $_SESSION['cont'] = $cont;
}
}
$banco->atualiza();
$refresh=10*$banco->config['refresh']['val'];
$model->Show() ;
?>
<script language="Javascript">
function right(e) {
if (navigator.appName == 'Netscape' && (e.which == 3 || e.which == 2)){
alert("Proibido a cópia do código desta página");
return false;
}
else if (navigator.appName == 'Microsoft Internet Explorer' &&
(event.button == 2 || event.button == 3)) {
alert("Proibido a cópia do código desta página");
return false;
}
return true;
}
document.onmousedown=right;
if (document.layers) window.captureEvents(Event.MOUSEDOWN);
window.onmousedown=right;
</script>

Só não entendo porque o reservado a todos só vai para quem envia e o enviado a todos sem reserva vai para todos ois usuarios.

 

Pela query ou pelo php não vejo logica.

 

Segue tambem a estrutura da tabela:

CREATE TABLE `msg` (
 `msg` mediumtext,
 `date` datetime DEFAULT NULL,
 `rem` varchar(30) DEFAULT NULL,
 `dest` varchar(30) DEFAULT NULL,
 `som` varchar(20) DEFAULT NULL,
 `tipo` varchar(10) DEFAULT NULL,
 `sala` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você prestar bem atençao vai entender isso nao é erro

 

Se você reservar a Todos o sistema está considerando Todos como um membro do chat

 

Se você enviar normalmente a todos, todos vao ver a mensagem.

 

Cara é so desabilitar a opção de reservadado para todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é. Foi exatamente isso que eu fiz.

Só que o cliente viu o chat do UOL que funciona assim e resolveu que quer igual ao do UOL.

 

O usuario clikando em reservado a TODOS e todos vendo.

 

Puxa pessaol.

Ainda não consegui resolver essa.

Se alguem pudesse me ajudar e agradeceria muito.

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.