Ir para conteúdo

Arquivado

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

Vales & Dores

atualize a sua page e a do amigos quando manda msg

Recommended Posts

eu posto e quando eu posto a minha pagina atualiza revelando para mim o que foi que eu escrevi

 

mas quando outra pessoa me posta a minha pagina nao atualiza e acabo nao vendo os post em tempo real.

 

Qual sera a logica disso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz a busca via Ajax procurando no banco de dados se for encontrado MSG nova ela é exibida, determine um intervalo de tempo para a pesquisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz a busca via Ajax procurando no banco de dados se for encontrado MSG nova ela é exibida, determine um intervalo de tempo para a pesquisa.

 

 

KKK muito bom man ja tinha pensado nisso mas achama que deveria ser desnecessario, mas vejo que nem tudo vem pensado nao e mesmo ?

O negocio e assim:

 

SE msg nova na tabela 1 no campo msg ;

mostrar na tela;

senao ficar pianinho rs.

 

TKS QRA sempre a disposiçao e nois se precisar fala ai um abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente a qui esta um sistema para chat.php eu descrevi o que eu acho sobre as linhas

mas, tem uma coisa que não intendi ainda, a forma de trabalhar com a sessions e por que tanta condição if de !isset?

por que se nao !isset ele cria a sessao ? outra coisa o que quer dizer isso:

if (!isset($_SESSION['chatHistory'][$chat['from']]))						{
$_SESSION['chatHistory'][$chat['from']] = '';

 

 

Porque temos dois foreach e um while?

valeu amigos assim que o projeto estiver no ar vou postar o resultado esse chat e igual ao do facebook abraço a todos

 

 

 

 

<?php

define ('DBPATH','localhost');
define ('DBUSER','root');
define ('DBPASS','');
define ('DBNAME','user');

global $dbh;
$dbh = mysql_connect(DBPATH,DBUSER,DBPASS);
mysql_selectdb(DBNAME,$dbh);


//iniciar sessao
ob_start();
session_start();
$_SESSION['username'];
//sessao esta ok





//verificar se alguma coisa foi clicada 
if ($_GET['action'] == "chatheartbeat") { chatHeartbeat(); } 
if ($_GET['action'] == "sendchat") { sendChat(); } 
if ($_GET['action'] == "closechat") { closeChat(); } 
if ($_GET['action'] == "startchatsession") { startChatSession(); } 









//se nao existir as session como: chatHistory, e openChatBoxes, ele vai criar elas 	
if (!isset($_SESSION['chatHistory'])) 
{
	$_SESSION['chatHistory'] = array();	
}

if (!isset($_SESSION['openChatBoxes'])) 
{
	$_SESSION['openChatBoxes'] = array();	
}

//----------------------------------------------------------------------------------------





//----------------------------------------------------------------------------------------
function chatHeartbeat() 
{

	$sql = "select * from chat where (chat.to = '".mysql_real_escape_string($_SESSION['username'])."' AND recd = 0) order by id ASC";
$query = mysql_query($sql);
$items = '';

$chatBoxes = array();





//----------------------------------------------------------------------------------------
//Mostrar um array da tabela chat
			while ($chat = mysql_fetch_array($query)) 
		{
					//Se não existe
					if (!isset($_SESSION['openChatBoxes'][$chat['from']]) && isset($_SESSION['chatHistory'][$chat['from']])) 
						{
							$items = $_SESSION['chatHistory'][$chat['from']]; //criar essa linha
						}




// sanitize é um filtro anti ejection
$chat['message'] = sanitize($chat['message']);




/*  
Heredoc e Nowdoc são duas formas de representar strings em PHP, 
mantendo a quebra de linha e espaço presente no conteúdo de um texto, 
o que facilita a criação de strings complexas.
*/

$items .= <<<EOD
{
          "s": "0",
          "f": "{$chat['from']}",
          "m": "{$chat['message']}"
},
EOD;






//se nao existe
if (!isset($_SESSION['chatHistory'][$chat['from']]))						{
$_SESSION['chatHistory'][$chat['from']] = '';//criar essa linha
						}


$_SESSION['chatHistory'][$chat['from']] .= <<<EOD
{	
        "s": "0",
	"f": "{$chat['from']}",
	"m": "{$chat['message']}"
},
EOD;

unset($_SESSION['tsChatBoxes'][$chat['from']]);
$_SESSION['openChatBoxes'][$chat['from']] = $chat['sent'];
		}

//----------------------------------------------------------------------------------------






//-----------------------------------------------------------------------------------------	

/* 

send leva a data é hora a sessao a sima esta criada com a data dentro dela mas ainda acho estranho ter a chat from nao intendo esse mode
sera programação linear? 
acho que nao por que nao tem ; e continua a programação.


mas da para perceber que essa parte do codigo e a responsavel por emitir na tela uma mensagem de texto caso o tempo ultrapasse
180 segundos sem mandar nada estranho isso.

*/
if (!empty($_SESSION['openChatBoxes'])) 
{


foreach ($_SESSION['openChatBoxes'] as $chatbox => $time) 
                {



				// se nao existir mostrar o tempo e a data
				if (!isset($_SESSION['tsChatBoxes'][$chatbox])) 
		{
				$now = time()-strtotime($time); 
				$time = date('g:iA M dS', strtotime($time));
				$message = "Sent at $time";




// se a variavel now for maior que 180 mostrar a mensagem do WHILE que esta a cima
if ($now > 180) 
{
   $items .= <<<EOD

	{
		"s": "2",
		"f": "$chatbox",
	        "m": "{$message}"
					},
EOD;


//se nao existe
if (!isset($_SESSION['chatHistory'][$chatbox])) 
     {
$_SESSION['chatHistory'][$chatbox] = '';
						}



$_SESSION['chatHistory'][$chatbox] .= <<<EOD
{
	"s": "2",
	"f": "$chatbox",
	"m": "{$message}"
},
EOD;
$_SESSION['tsChatBoxes'][$chatbox] = 1;
}






   } }  }
//----------------------------------------------------------------------------------------	





//----------------------------------------------------------------------------------------		


	$sql = "update chat set recd = 1 where chat.to = '".mysql_real_escape_string($_SESSION['username'])."' and recd = 0";
	$query = mysql_query($sql);






			if ($items != '') 
			{
				$items = substr($items, 0, -1);
			}




				header('Content-type: application/json');
?>



			{
				"items": 
				[
					<?php echo $items; ?>
				]
			}



<?php
			exit(0);


}

//----------------------------------------------------------------------------------------	




//----------------------------------------------------------------------------------------

	function chatBoxSession($chatbox) 
	{


		$items = '';

		if (isset($_SESSION['chatHistory'][$chatbox])) 
		{
			$items = $_SESSION['chatHistory'][$chatbox];
		}

		return $items;
	}


//----------------------------------------------------------------------------------------		





//----------------------------------------------------------------------------------------


	function startChatSession() 
	{
				$items = '';
				if (!empty($_SESSION['openChatBoxes'])) 
				{
					foreach ($_SESSION['openChatBoxes'] as $chatbox => $void) 
					{
						$items .= chatBoxSession($chatbox);
					}
				}


				if ($items != '') 
				{
					$items = substr($items, 0, -1);
				}

			header('Content-type: application/json');
?>



		{
			"username": "<?php echo $_SESSION['username'];?>",
			"items": [
				<?php echo $items;?>
			]
		}

<?php


		exit(0);
	}

//----------------------------------------------------------------------------------------





//----------------------------------------------------------------------------------------		

function sendChat() 
{
	$from = $_SESSION['username'];
	$to = $_POST['to'];
	$message = $_POST['message'];

	$_SESSION['openChatBoxes'][$_POST['to']] = date('Y-m-d H:i:s', time());

	//Filtrar msg sanitize
	$messagesan = sanitize($message);

		if (!isset($_SESSION['chatHistory'][$_POST['to']])) 
			{
				$_SESSION['chatHistory'][$_POST['to']] = '';
			}

			$_SESSION['chatHistory'][$_POST['to']] .= <<<EOD
				{
					"s": "1",
					"f": "{$to}",
					"m": "{$messagesan}"
				},
EOD;


	unset($_SESSION['tsChatBoxes'][$_POST['to']]);

	$sql = "insert into chat (chat.from,chat.to,message,sent) values ('".mysql_real_escape_string($from)."', '".mysql_real_escape_string($to)."','".mysql_real_escape_string($message)."',NOW())";
	$query = mysql_query($sql);
	echo "1";
	exit(0);
}
//----------------------------------------------------------------------------------------	




//----------------------------------------------------------------------------------------
	function closeChat() 
	{

		unset($_SESSION['openChatBoxes'][$_POST['chatbox']]);

		echo "1";
		exit(0);
	}

//----------------------------------------------------------------------------------------





//----------------------------------------------------------------------------------------		
	function sanitize($text) 
	{
		$text = htmlspecialchars($text, ENT_QUOTES);
		$text = str_replace("\n\r","\n",$text);
		$text = str_replace("\r\n","\n",$text);
		$text = str_replace("\n","<br>",$text);
		return $text;
	}
//----------------------------------------------------------------------------------------

 

se quizer ver como esta o projeto acesse loveme.eu.pn, não se esqueça ainda esta em contrução obrigado

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.