Ir para conteúdo

Arquivado

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

Luiz Henrique

Como executar uma função php dentro do js?

Recommended Posts

Olá, fiz uma busca aqui li umas 5 páginas mas nada de resultados de acordo com que eu queria!

 

A dúvida é a seguinte, preciso criar um filtro de palavras para um chat, tenho um formulário que envia o texto para uma página .js (é um script pronto que peguei aqui no fórum), o que eu quero é que no início desta página eu possa estar chamando uma página php que vai fazer uma leitura do texto digitado retirar as palavras indevidas de acordo com meu Banco de dados e retornar a página.js com o filtro aplicado e continue o script js normalmente.

 

resumindo:

 

texto digitado sai da index.htm vai para script.js vai para filtro.php volta script.js.

 

Agora o porque eu não faço passar 1º pelo php para depois ir ao js, é porque a página index.htm onde tem o campo para digitar o texto não é um formulário com um botão submit só tem isto.

 

{strip}<script type="text/javascript">var myNick='{$smarty.session.userID.nick}';firstRoom='{$smarty.session.userID.accept}';emoticonCuts=[{$emotCuts}];emoticonNames=[{$emotNames}];</script>

então para não alterar algo que pare defuncionar prefiro fazer da forma que estou perguntando se houver possibilidade.

fico no aguardo t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Analise uma idéia que vou te passar, vou usar o nome das variáveis que você usou no seu exemplo:

 

 

window.location.href = "pagina.php?myNick="+escape(myNick)+"&firstRoom"+escape(firstRoom)+"&emoticonCuts"+escape(emoticonCuts)+"&emoticonNames="+escape(emoticonNames);

assim você estaria simulando um submit de um formulário com method="get".

 

Talvez isso te ajude.

Compartilhar este post


Link para o post
Compartilhar em outros sites

daew rapaz,

 

Então, não entendo muito de js, não seio que faz cada ítem, descrito acima, pois peguei o chat aqui do fórum pronto, só que tenho que fazer adaptações.

 

Pelo que entendi eu teria que carregar variáveis na linha que você escreveu e enviar para pagina.php e executaria a função, mas ele já executa isso,

olha como é as páginas resumidas.

HTML

index.htm{strip}<script type="text/javascript">var myNick='{$smarty.session.userID.nick}';firstRoom='{$smarty.session.userID.accept}';emoticonCuts=[{$emotCuts}];emoticonNames=[{$emotNames}];</script>... <td width="100%"><textarea id="textInput" style="border: 0px; width: 100%; height: 65px; overflow: auto; margin: 3px;"></textarea></td>																 <td height="100%"><button id="sendButton" type="button" style="height: 65px; margin: 3px;" disabled="disabled">Enviar</button></td> ...{/strip}
aqui entendi que o sendButton e textInput estão relacionados passando valor a função.

JS

var Sender = {	send: function() {			Ajax.open([GET]"filtro_BBL.php?"funcao=palavras);		var txt = $('textInput').value.trim();				$('textInput').value = '';		$('sendButton').disabled = true;				if(txt.length > 0) {			if(txt.charAt(0) == '/') {				this.sendCommand(txt);				return;			}						if(activePanel.type == 0) {				activePanel.appendln('Você não pode enviar mensagens ao Servidor', {color: '#FF0000'});				return;			}		...sequencia de erros possíveis......

já tentei fazer um monte de coisas, modificar a index.htm colocando um formulário mesmo com btn submit, mas não funciona depois, aí pensei em chamar a função php dentro do js imagino que ele faria o que eu preciso:

 

var Sender = {	send: function() {//				aqui chamaria a função.php		var txt = $('textInput').value.trim();
mas como chamar esta função aqui dentro já, li algo sobre Ajax.open mas não entendi como fazer ele retornar o resultado da funçãoPHP

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ae luiz, entaum, ia te falar sobre o ajax

 

faz isso ó. Crie um script PHP

 

<?php $var = "";$var = function_blablabla();echo $var;//Resumindo, a função que você quer ^^ ?>

assim, o script vai retornar o que você quer =)

 

ai você faz isso com javascript

 

function openAjax(){	var Ajax;	try	{		Ajax=new XMLHttpRequest();	}	catch(ee)	{		try		{			Ajax=new ActiveXObject("Msxml2.XMLHTTP");		}		catch(e)		{			try			{				Ajax=new ActiveXObject("Microsoft.XMLHTTP");			}			catch(e)			{				Ajax=false;			}		}	}	return Ajax;}function carregaPHP(){	if(document.getElementById)	{   		var Ajax=openAjax();		Ajax.open("GET", "meu_script.php", true);		Ajax.onreadystatechange=function()								  {									  if(Ajax.readyState==4)									  {										  if(Ajax.status==200)										  {											  var resultado=Ajax.responseText;											  resultado=resultado.replace(/\+/g," ");											  resultado=unescape(resultado);											  // Aqui a variavel resultado contem o retorno da minha funcao PHP										  }										  else										  {											  exibeResultado.innerHTML="Erro";										  }									  }								  }		Ajax.send(null);	}}

 

Bom, +/- isso, ve ai =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Daew rapaz, então não funcionou aqui, também não entendi o code! rsrs... vou colocar o código das 3 páginas que imagino ser necessário.

 

chat.html

{strip}<script type="text/javascript">var myNick='{$smarty.session.userID.nick}';firstRoom='{$smarty.session.userID.accept}';emoticonCuts=[{$emotCuts}];emoticonNames=[{$emotNames}];</script><table width="100%" height="100%" cellspacing="6" cellpadding="0">	<tr>		<td valign="top" rowspan="2" width="160" height="100%">			<table width="100%" height="100%" class="borderTable" cellspacing="1" cellpadding="0">				<tr>					<td style="padding: 1px;" height="1"><div class="title"><div>Salas Ativas</div></div></td>				</tr>				<tr>					<td valign="top">						<div id="openPanes" class="chatPanel" style="display: none;">						</div>					</td>				</tr>			</table>		</td>		<td height="100%">			<table width="100%" height="100%" class="borderTable" cellspacing="1" cellpadding="0">				<tr>					<td style="padding: 1px;" height="1"><div class="title"><div id="conversaTitle"></div></div></td>				</tr>				<tr>					<td valign="top" height="100%" id="conversaLocation" style="background: url('img/logoFundo.gif') no-repeat center center #FFF;">					</td>				</tr>			</table>		</td>		<td width="200" id="usersTD" style="display: none;">			<table width="100%" height="100%" class="borderTable" cellspacing="1" cellpadding="0">				<tr>					<td style="padding: 1px;" height="1"><div class="title"><div>Usuários</div></div></td>				</tr>				<tr>					<td valign="top" id="usersLocation"></td>				</tr>			</table>		</td>	</tr>	<tr>		<td height="1" colspan="2">			<table width="100%" height="100%" class="borderTable" cellspacing="1" cellpadding="0">				<tr>					<td style="padding: 1px;" height="1" align="left" valign="top">						<table class="title" width="100%" height="24" cellspacing="0" cellpadding="1" id="tableIcons">							<tr>								<td width="35"><img src="img/emoticons.gif" width="35" height="22" alt="Exibir emoticons" onclick="openEmoticons(event);"></td>								<td width="40"><img src="img/icoFontColor.gif" width="40" height="22" alt="Alterar cor da fonte" onclick="openColor(event);"></td>								<td width="28"><img src="img/icoScrollAtivo.gif" width="28" height="22" alt="Ativar / Desativar rolagem automatica ao receber mensagens" onclick="scrollToogle(this);"></td>								<td width="26"><img width="26" height="22" id="imgSom" alt="Ativar / Desativar som ao receber mensagens pessoais" onclick="soundTrigger(this);"></td>								<td width="28"><img src="img/icoSair.gif" width="28" height="22" alt="Sair do Chat" onclick="exitChat();"></td>								<td><span></span></td>							</tr>						</table>					</td>				</tr>				<tr>					<td>						<table width="100%" cellspacing="0" cellpadding="0">							<tr>							<td width="100%"><textarea id="textInput" style="border: 0px; width: 100%; height: 65px; overflow: auto; margin: 3px;"></textarea></td>																 <td height="100%"><button id="sendButton" type="button" style="height: 65px; margin: 3px;" disabled="disabled">Enviar</button></td> 							</tr>						</table>					</td>				</tr>				<tr>					<td id="status" width="100%">créditos</td>				</tr>			</table>		</td>	</tr></table>{/strip}
chatSender.js

var Sender = {	send: function() {			var txt = $('textInput').value.trim();				$('textInput').value = '';		$('sendButton').disabled = true;				if(txt.length > 0) {			if(txt.charAt(0) == '/') {				this.sendCommand(txt);				return;			}						if(activePanel.type == 0) {				activePanel.appendln('Você não pode enviar mensagens ao Servidor', {color: '#FF0000'});				return;			}						if(activePanel.type == 1) {				if(activePanel.roomID == 0) {					activePanel.appendln('Aguarde o carregamento de usuários para enviar mensagens para essa sala', {color: '#FF0000'});					return;				} else if(activePanel.roomID == -1) {					activePanel.appendln('Você não pode enviar mensagens para uma sala inexistente', {color: '#FF0000'});					return;				}			}						var error = function(v, f, c) {				if(!f)					Error.handle(v, c[0]);				else {					c[0].append("A seguinte mensagem não pode ser entregue:<br>" + txt, {color: '#FF0000'});				}			};						var prefix = ['', 'R', 'U'];			var to = prefix[activePanel.type] + ':' + activePanel.id;						Ajax.open('filtrar.php?filtro=send', {error: error, post: 'msg=' + escape(txt) + '&to=' + escape(to) + '&color=' + userColor, args: [activePanel, txt]});						txt = txt.replace(/\</g, '<');			txt = txt.replace(/\</g, '>');			txt = txt.replace(/\n/g, '<br>');						activePanel.appendMessage(txt, myNick, userColor);		}	},		sendCommand: function(v) {		var pos = v.indexOf(' ');				if(pos == -1) {			var command = v.substring(1, v.length);			var args = [];		} else {			var command = v.substring(1, pos);			var args = v.substring(pos + 1, v.length).split(' ');		}				var serverCommands = ['find', 'register', 'changepassword', 'ban', 'unban', 'kikar', 'criarsala', 'delsala', 'listban', 'admin', 'listadmin', 'registeradmin', 'deladmin', 'deluser', 'listsalas'];				if(command == 'help' || command == 'h')			this.help(args);		else if(command == 'join' || command == 'j')			this.join(args);		else if(command == 'showping')			this.tooglePing();		else if(command == 'clear' || command == 'cls')			this.clearScreen();		else if(command == 'quit')			this.quit();		else if(serverCommands.inArray(command))			this.serverCommand(command, args);		else			activePanel.appendln('Comando desconhecido', {color: '#FF0000'});	},		help: function(args) {		var type = args[0];				if(type)			this.specifyHelp(type);		else {			var h = '';						h += '<b>/help</b> ou <b>/h</b> => Mostra tela de ajuda<br>';			h += '<b>/join <i>nome_sala</i></b> ou <b>/j <i>nome_sala</i></b> => Entrar na sala <i>nome_sala</i><br>';			h += '<b>/register <i>email senha confirma_senha</i></b> => Registrar o nick em uso<br>';			h += '<b>/changepassword <i>senha_antiga senha confirma_senha</i></b> => Trocar sua senha (apenas se já for registrado)<br>';			h += '<b>/showping</b> => mostrar o seu ping para com o chat<br>';			h += '<b>/clear</b> ou <b>/cls</b> => limpar a tela atual<br>';			h += '<b>/find <i>usuario</i></b> => busca por um usuário<br>';			h += '<b>/kikar <i>usuario</i></b> => kikar usuário<br>';			h += '<b>/quit</b> => sair do chat<br><br>';						h += 'Para uma descrição mais completa de algum comando digite: <b>/help <i>comando</i></b> ou <b>/h <i>comando</i></b><br><br><br>';						h += '<b>/admin</b> => Comando exclusivos para Administradores<br>';								activePanel.appendln(h, {color: '#009', fontFamily: 'Courier New'});		}	},		specifyHelp: function(type) {		var h = '';				if(type == 'help' || type == 'h') {			h += '<b>/help</b> ou <b>/h</b><br>';			h += 'Mostra ajuda do chat.';		} else if(type == 'join' || type == 'j') {			h += '<b>/join <i>nome_sala</i></b> ou <b>/j <i>nome_sala</i></b><br>';			h += 'Esse comando lhe permite acessar uma nova sala no chat, caso a sala já esteja aberta, ele vai apenas dar foco na janela da sala.';		} else if(type == 'register') {			h += '<b>/register <i>email senha confirma_senha</i></b><br>';			h += 'Use esse comando para registrar o nick que você esta usando, lembre-se de usar um e-mail válido, pois o registro do seu nick só será ativado após a confirmação via email';		} else if(type == 'changepassword') {			h += '<b>/changepassword <i>senha_antiga senha confirma_senha</i></b><br>';			h += 'Se você já for registrado e deseja alterar sua senha, use esse comando.';		} else if(type == 'showping') {			h += '<b>/showping</b><br>';			h += 'Mostra o tempo entre o pedido de requisição ao servidor e a resposta para o cliente, esse tempo eh marcado em milézimos de segundo.<br>';			h += 'Existem 2 tipos de ping no BBL, o 1° tipo é o ping para mensagens pessoais, esse ping fica representado na barra status (abaixo de onde você digita), o 2° tipo é o ping individual para cada sala, esse ping é mostrado na barra de título quando a sala está ativa.';		} else if(type == 'clear' || type == 'cls') {			h += '<b>/clear</b> ou <b>/cls</b><br>';			h += 'Apaga todas as mensagens da janela atualmente ativa.';		} else if(type == 'find') {			h += '<b>/find <i>usuário</i></b><br>';			h += 'Esse comando busca por um usuário logado no chat, se encontrado lista logo abaixo o nome das salas onde o usuário esta ativo (obs: o usuário pode estar online e ao mesmo tempo não estar em nenhuma sala).';		} else if(type == 'quit') {			h += '<b>/quit</b><br>';			h += 'Use esse comando para sair do chat';		} else if(type == 'kikar') {			h += '<b>/kikar <i>usuário</i></b><br>';			h += 'Use esse comando para kikar usuarios indesejados na sala, precisa de no minimo 60% dos usuário votem';		}				if(h) {			activePanel.appendln(h, {color: '#009', fontFamily: 'Courier New'});		} else {			activePanel.appendln('Não foi encontrada nenhuma ajuda para o comando solicitado', {color: '#900'});		}	},		join: function(args) {		var sala = args[0];		var r = traySearch(sala, 1);				if(r)			r.show();		else {			var p = new ChatPanel(sala, 1, sala);			p.show();		}	},		tooglePing: function() {		showRoomPing = !showRoomPing;				if(!showRoomPing) {			$('conversaTitle').innerHTML = activePanel.origTitle;			$('status').innerHTML = 'site; 2007';						for(var i = 0; i < chatPanels.length; i++) {				if(!chatPanels[i])					continue;								var p = chatPanels[i];								p.title = p.origTitle;			}		}	},		quit: function() {		Error.backLogin = true;				Ajax.open('filtrar.php?filtro=logout');	},		clearScreen: function() {		activePanel.panel.innerHTML = '';	},		serverCommand: function(command, args) {		var cb = function(v, p) {			var pos = v.indexOf(':');						if(pos == -1) {				var cmdNum = parseInt(v);				var text = '';			} else {				var cmdNum = parseInt(v.substring(0, pos));				var text = v.substring(pos + 1, v.length);			}						switch(cmdNum) {				case 0:					Sender.sendMessage(text, p);					break;				case 1:					Sender.scFind(text, p);					break;			}		};				var error = function(v, f, p) {			if(!f) {				Error.handle(v, p);			} else {				alert(v);			}		};				var argsOut = ['cmd=' + escape(command)];				for(var i = 0; i < args.length; i++) {			argsOut.insert('args[]=' + escape(args[i]));		}				Ajax.open('filtrar.php?filtro=command', {callback: cb, error: error, post: argsOut.join('&'), args: activePanel});	},		sendMessage: function(v, p) {		v = Ajax.strToArray(v);				var msg = v[0];		var color = v[1];				p.appendln(msg, {color: color, fontWeight: 'bold'});	},		scFind: function(v, p) {		v = Ajax.strToArray(v);				var nick = v[0];		var rooms = v[1];				var out = 'O usuário <b>' + nick + '</b> está online<br>';				for(var i = 0; i < rooms.length; i++) {			out += '#' + rooms[i] + '<br>';		}				p.append(out, {color: '#090'});	}};
e a filtra_palavra.php

<?PHP$con = @mysql_connect("localhost","login","pass") or die("Erro na conecção!");$sel = @mysql_select_db("filtro_palavras") or die("BD Inexistente");function filtro($var) {	$p_q = @mysql_query("SELECT * FROM palavras");	while($p = @mysql_fetch_array($p_q))	{		$var = str_replace($p["palavra"], "*",$var);	}	return $var;}?>

Isso é o que tenho, talvez não tenha posto da forma correta, pois ao logal no chat ele não aparece a tela de digitar txt, usuários online nem das salas, bom como eu disse provavelmente inseri o code no local errado ou alguma variável errada.

fico no aguardo obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, não sou avançado igual a pessoa que fez esse js ae, pra mim tem algumas coisas confusas.por exemplo: esse Ajax.open foi voce quem pois?só uma coisa: voce quer que quando o usuario enviar uma msg ao chat, troque por exemplo: "você" por "voce"? (mas com palavrões)você quer substituir certa palavra por outra? ou quer remove-la? ou você naum quer enviar a msg e mostrar uma msg ao usuario dizendo que existem palavras improprias?se você quer substituir, você quer que isso ocorra quando o usuario mandar a msg ou quando ela for mostrada na janela de mensagens??essas mensagens são armazenadas em algum lugar. Voce quer que essa troca seja gravada no banco tb?se você quiser mostrar uma msg ao usuario, será mas facil.mas uma coisa luiz, tem como você mandar o codigo todo no meu email?assim posso instalar o sistema aqui, e fazer testes, será bem mais facil.

Compartilhar este post


Link para o post
Compartilhar em outros sites

preciso que a hora que o usuário digite uma palavra inapropriada para crianças lerem rsrsr seja substituida por (*) ou não apareça , nada demais, é apenas uma comparação se a palavra que o cara digitou é a mesma da lista de palavras proibidas contida no banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, vou pegar o código e o mais rapido possivel te dou a resposta

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se tem como, mas a verificação do texto digitado poderia ser até mesmo no próprio script js uma lista de palavras, não entendo de javascrip não se é possível fazer isto ou abrir um bloco de notas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola, fiz uma coisa aqui rapidinho, ja que você disse que podia ser em arquivo ou sei la. talvez ja ajude se forem poucas palavras

 

adicionei isso ao final do chatSender.js

 

function meu_filtro(msg) {	msg = msg.replace("bruno", "bruno vira nome");	msg = msg.replace("pitteli", "pitteli vira sobrenome");	return msg;}

e na linha 7 do mesmo arquivo, logo após

 

var txt = $('textInput').value.trim();

adicionei isso

 

txt = meu_filtro(txt);

 

e se ajuda, vou implementar um ajax aqui, mas ve se isso ja ajuda.

 

outra coisa, parece que o chat ja tem um sistema de filtro, mas naum tentei fazer ele funcionar, talvez onde você baixou deva existir alguma coisa sobre

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal funcionou, existe um limite para isso?tem como eu criar uma include naquele local, para fazer um arquivo separado, só de palavras para filtro, pois o mesmo trabalho que eu teria para incluir isso no BD seria para digitar no códigomas ta funcionando legalobrigado, vou esperar tambem o ajax ai tbm, obrigado mesmo salvou minha vida rsrs t+ rapaz

Compartilhar este post


Link para o post
Compartilhar em outros sites

calma que to fazendo alguma coisa menos "caseira" uAHEuHAeuHAerapidao ja te respondops: o negocio aqui virou pessoal

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem, fiz uma coisa menos caseira: não diferencia maiusculas de minusculas, e da pra fazer uma listinha ali ó, veja como ficou

 

function stri_replace(txt) {		var badWords = new Array(								"palavra_1", 								"palavra_2", 								"palavra_3"								);		var txtFinal = txt;		var token = "";		var pos = 0;		while((pos = txt.indexOf(" ")) != -1) {			token = txt.substring(0, pos);						for(i=0; i<=badWords.length + 1; i++) {				if(token.toLowerCase() == badWords[i]) {					txtFinal = txtFinal.replace(token, "*");				}			}			txt = txt.substring(pos + 1, txt.length);		}				token = txt.substring(0, txt.length);		for(i=0; i<=badWords.length + 1; i++) {			if(token.toLowerCase() == badWords[i]) {				txtFinal = txtFinal.replace(token, "*");			}		}				return txtFinal;	}

 

para testar

<script language="javascript">	var txt = "Esta É a MiNhA VerDadeIra MenSaGem Do BruNo";	alert(stri_replace(txt));		function stri_replace(txt) {		var badWords = new Array(								"verdadeira", 								"bruno"								);		var txtFinal = txt;		var token = "";		var pos = 0;		while((pos = txt.indexOf(" ")) != -1) {			token = txt.substring(0, pos);						for(i=0; i<=badWords.length + 1; i++) {				if(token.toLowerCase() == badWords[i]) {					txtFinal = txtFinal.replace(token, "*");				}			}			txt = txt.substring(pos + 1, txt.length);		}				token = txt.substring(0, txt.length);		for(i=0; i<=badWords.length + 1; i++) {			if(token.toLowerCase() == badWords[i]) {				txtFinal = txtFinal.replace(token, "*");			}		}				return txtFinal;	}</script>

de pouco em pouco ta saindo alguma coisa ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas conde coloco isso:

function stri_replace(txt) {		var badWords = new Array(								"palavra_1",								"palavra_2",								"palavra_3"								);		var txtFinal = txt;		var token = "";		var pos = 0;		while((pos = txt.indexOf(" ")) != -1) {			token = txt.substring(0, pos);						for(i=0; i<=badWords.length + 1; i++) {				if(token.toLowerCase() == badWords[i]) {					txtFinal = txtFinal.replace(token, "*");				}			}			txt = txt.substring(pos + 1, txt.length);		}				token = txt.substring(0, txt.length);		for(i=0; i<=badWords.length + 1; i++) {			if(token.toLowerCase() == badWords[i]) {				txtFinal = txtFinal.replace(token, "*");			}		}				return txtFinal;	}
tentei colocar abaixo de

var txt = $('textInput').value.trim();

no lugar de:

txt = meu_filtro(txt);

e não rolou, ao final do script eu consigo digitar mas não fnciona o enviar, acredito que devo estar esquecendo de algo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

no final do arquivo chatSender.js coloque a função

 

e no lugar de

 

txt = meu_filtro(txt);

coloque

 

txt = stri_replace(txt);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi o que eu fiz , mas aí eu digito o texto e não sai nada, como se estivesse desabilitado o botão enviar, ou a função do enter, o que acontece é que ao clicar em enter ele pula linha ao inves de enviar, funcionou aí?Ou melhor qual é a função do js que ignora maiúculo e minúsculo, talvez dê para implementar naquela 1ª versão do filtro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas a lógica eh a mesma, é só trocar o que tem dentro das funções entaum =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabei de fazer o que disse, ia até editar o post, citando que não funcionaria mesmo trocando o conteúdo da função, não envia msg, não sai da caixa de etxto mesmo clicando em enviar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Luiz, aqui funcionou normalmente, olha como ta o meu chatSender.js

 

var Sender = {	send: function() {		var txt = $('textInput').value.trim();				$('textInput').value = '';		$('sendButton').disabled = true;				if(txt.length > 0) {			if(txt.charAt(0) == '/') {				this.sendCommand(txt);				return;			}						txt = stri_replace(txt);						if(activePanel.type == 0) {				activePanel.appendln('Você não pode enviar mensagens ao Servidor', {color: '#FF0000'});				return;			}						if(activePanel.type == 1) {				if(activePanel.roomID == 0) {					activePanel.appendln('Aguarde o carregamento de usuários para enviar mensagens para essa sala', {color: '#FF0000'});					return;				} else if(activePanel.roomID == -1) {					activePanel.appendln('Você não pode enviar mensagens para uma sala inexistente', {color: '#FF0000'});					return;				}			}						var error = function(v, f, c) {				if(!f)					Error.handle(v, c[0]);				else {					c[0].append("A seguinte mensagem não pode ser entregue:<br>" + txt, {color: '#FF0000'});				}			};						var prefix = ['', 'R', 'U'];			var to = prefix[activePanel.type] + ':' + activePanel.id;						Ajax.open('filtrar.php?filtro=send', {error: error, post: 'msg=' + escape(txt) + '&to=' + escape(to) + '&color=' + userColor, args: [activePanel, txt]});						txt = txt.replace(/\</g, '<');			txt = txt.replace(/\</g, '>');			txt = txt.replace(/\n/g, '<br>');						activePanel.appendMessage(txt, myNick, userColor);		}	},		sendCommand: function(v) {		var pos = v.indexOf(' ');				if(pos == -1) {			var command = v.substring(1, v.length);			var args = [];		} else {			var command = v.substring(1, pos);			var args = v.substring(pos + 1, v.length).split(' ');		}				var serverCommands = ['find', 'register', 'changepassword', 'ban', 'unban', 'kikar', 'criarsala', 'delsala', 'listban', 'admin', 'listadmin', 'registeradmin', 'deladmin', 'deluser', 'listsalas'];				if(command == 'help' || command == 'h')			this.help(args);		else if(command == 'join' || command == 'j')			this.join(args);		else if(command == 'showping')			this.tooglePing();		else if(command == 'clear' || command == 'cls')			this.clearScreen();		else if(command == 'quit')			this.quit();		else if(serverCommands.inArray(command))			this.serverCommand(command, args);		else			activePanel.appendln('Comando desconhecido', {color: '#FF0000'});	},		help: function(args) {		var type = args[0];				if(type)			this.specifyHelp(type);		else {			var h = '';						h += '<b>/help</b> ou <b>/h</b> => Mostra tela de ajuda<br>';			h += '<b>/join <i>nome_sala</i></b> ou <b>/j <i>nome_sala</i></b> => Entrar na sala <i>nome_sala</i><br>';			h += '<b>/register <i>email senha confirma_senha</i></b> => Registrar o nick em uso<br>';			h += '<b>/changepassword <i>senha_antiga senha confirma_senha</i></b> => Trocar sua senha (apenas se já for registrado)<br>';			h += '<b>/showping</b> => mostrar o seu ping para com o chat<br>';			h += '<b>/clear</b> ou <b>/cls</b> => limpar a tela atual<br>';			h += '<b>/find <i>usuario</i></b> => busca por um usuário<br>';			h += '<b>/kikar <i>usuario</i></b> => kikar usuário<br>';			h += '<b>/quit</b> => sair do chat<br><br>';						h += 'Para uma descrição mais completa de algum comando digite: <b>/help <i>comando</i></b> ou <b>/h <i>comando</i></b><br><br><br>';						h += '<b>/admin</b> => Comando exclusivos para Administradores<br>';								activePanel.appendln(h, {color: '#009', fontFamily: 'Courier New'});		}	},		specifyHelp: function(type) {		var h = '';				if(type == 'help' || type == 'h') {			h += '<b>/help</b> ou <b>/h</b><br>';			h += 'Mostra ajuda do chat.';		} else if(type == 'join' || type == 'j') {			h += '<b>/join <i>nome_sala</i></b> ou <b>/j <i>nome_sala</i></b><br>';			h += 'Esse comando lhe permite acessar uma nova sala no chat, caso a sala já esteja aberta, ele vai apenas dar foco na janela da sala.';		} else if(type == 'register') {			h += '<b>/register <i>email senha confirma_senha</i></b><br>';			h += 'Use esse comando para registrar o nick que você esta usando, lembre-se de usar um e-mail válido, pois o registro do seu nick só será ativado após a confirmação via email';		} else if(type == 'changepassword') {			h += '<b>/changepassword <i>senha_antiga senha confirma_senha</i></b><br>';			h += 'Se você já for registrado e deseja alterar sua senha, use esse comando.';		} else if(type == 'showping') {			h += '<b>/showping</b><br>';			h += 'Mostra o tempo entre o pedido de requisição ao servidor e a resposta para o cliente, esse tempo eh marcado em milézimos de segundo.<br>';			h += 'Existem 2 tipos de ping no WWC, o 1° tipo é o ping para mensagens pessoais, esse ping fica representado na barra status (abaixo de onde você digita), o 2° tipo é o ping individual para cada sala, esse ping é mostrado na barra de título quando a sala está ativa.';		} else if(type == 'clear' || type == 'cls') {			h += '<b>/clear</b> ou <b>/cls</b><br>';			h += 'Apaga todas as mensagens da janela atualmente ativa.';		} else if(type == 'find') {			h += '<b>/find <i>usuário</i></b><br>';			h += 'Esse comando busca por um usuário logado no chat, se encontrado lista logo abaixo o nome das salas onde o usuário esta ativo (obs: o usuário pode estar online e ao mesmo tempo não estar em nenhuma sala).';		} else if(type == 'quit') {			h += '<b>/quit</b><br>';			h += 'Use esse comando para sair do chat';		} else if(type == 'kikar') {			h += '<b>/kikar <i>usuário</i></b><br>';			h += 'Use esse comando para kikar usuarios indesejados na sala, precisa de no minimo 60% dos usuário votem';		}				if(h) {			activePanel.appendln(h, {color: '#009', fontFamily: 'Courier New'});		} else {			activePanel.appendln('Não foi encontrada nenhuma ajuda para o comando solicitado', {color: '#900'});		}	},		join: function(args) {		var sala = args[0];		var r = traySearch(sala, 1);				if(r)			r.show();		else {			var p = new ChatPanel(sala, 1, sala);			p.show();		}	},		tooglePing: function() {		showRoomPing = !showRoomPing;				if(!showRoomPing) {			$('conversaTitle').innerHTML = activePanel.origTitle;			$('status').innerHTML = 'Copyright Wilker Systems © 2006';						for(var i = 0; i < chatPanels.length; i++) {				if(!chatPanels[i])					continue;								var p = chatPanels[i];								p.title = p.origTitle;			}		}	},		quit: function() {		Error.backLogin = true;				Ajax.open('filtrar.php?filtro=logout');	},		clearScreen: function() {		activePanel.panel.innerHTML = '';	},		serverCommand: function(command, args) {		var cb = function(v, p) {			var pos = v.indexOf(':');						if(pos == -1) {				var cmdNum = parseInt(v);				var text = '';			} else {				var cmdNum = parseInt(v.substring(0, pos));				var text = v.substring(pos + 1, v.length);			}						switch(cmdNum) {				case 0:					Sender.sendMessage(text, p);					break;				case 1:					Sender.scFind(text, p);					break;			}		};				var error = function(v, f, p) {			if(!f) {				Error.handle(v, p);			} else {				alert(v);			}		};				var argsOut = ['cmd=' + escape(command)];				for(var i = 0; i < args.length; i++) {			argsOut.insert('args[]=' + escape(args[i]));		}				Ajax.open('filtrar.php?filtro=command', {callback: cb, error: error, post: argsOut.join('&'), args: activePanel});	},		sendMessage: function(v, p) {		v = Ajax.strToArray(v);				var msg = v[0];		var color = v[1];				p.appendln(msg, {color: color, fontWeight: 'bold'});	},		scFind: function(v, p) {		v = Ajax.strToArray(v);				var nick = v[0];		var rooms = v[1];				var out = 'O usuário <b>' + nick + '</b> está online<br>';				for(var i = 0; i < rooms.length; i++) {			out += '#' + rooms[i] + '<br>';		}				p.append(out, {color: '#090'});	}};function stri_replace(txt) {	var badWords = new Array(							"palavra_1",							"palavra_2",							"palavra_3"							);	var txtFinal = txt;	var token = "";	var pos = 0;	while((pos = txt.indexOf(" ")) != -1) {		token = txt.substring(0, pos);				for(i=0; i<=badWords.length + 1; i++) {			if(token.toLowerCase() == badWords[i]) {				txtFinal = txtFinal.replace(token, "*");			}		}		txt = txt.substring(pos + 1, txt.length);	}		token = txt.substring(0, txt.length);	for(i=0; i<=badWords.length + 1; i++) {		if(token.toLowerCase() == badWords[i]) {			txtFinal = txtFinal.replace(token, "*");		}	}		return txtFinal;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

var Sender = {	send: function() {		var txt = $('textInput').value.trim();		$('textInput').value = '';		$('sendButton').disabled = true;		if(txt.length > 0) {			if(txt.charAt(0) == '/') {				this.sendCommand(txt);				return;			}		   			txt = stri_replace(txt);

 

txt = stri_replace(txt); está fora da função a minha estava dentro

 

var Sender = {	send: function() {		var txt = $('textInput').value.trim();		$('textInput').value = '';		txt = stri_replace(txt);

resolvido isso, outra etapa rsrs.. exite alguma forma de estar inserindo aquelas linhas das palavras

 

var badWords = new Array(							"palavra_1",							"palavra_2",							"palavra_3"							);
sem precisar abrir o arquivo js?

 

Não sei se você testou ai com o Firefox e o IE, no IE perfeito no FF quem recebe a MSG 99% das vezes repete a msg recebida sem parar , aí repete para todos se for mandado uma msg para todos, ou seja se alguém logar com FF da pau para todos, então tem como bloquear o FF permitindo somente o IE e demais ou somente o IE, ou talvez você já saiba o que está causando isto.

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.