Ir para conteúdo

POWERED BY:

Arquivado

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

Dark Intensity

Filtro no Sistema de Torpedo!

Recommended Posts

Galera eu tenho uma web rádio e gostaria muito de usar aquele sistema de Torpedo, mais queria colocar um filtro nele para que os outros não escrevam palavrões nele... tipo quando alguem digitase algo na parte do texto dai aparecia uma msg dizendo que a msn não pode ser enviada por palavras inapropriadas ja tentei muito pegar na net alguns filtro e eu mesmo tentei editar mas mesmo assim a msg e enviada mas n filtra nada... eu vo postar o torpedo aki gostaria muito que alguem me desse essa força!

 

Link: http://www.megaupload.com/?d=J7WM8OKP ( me desculpe se n poder postar o link, é que n tem aqui Anexo pra enviar arquivo! )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie você o seu próprio filtro.

 

A possibilidade mais simples e chulé possível, seria usando str_replace(), tendo no primeiro parãmetro um array com todos os palavrões que conhece, no segundo um array com as substituições e no terceiro a variável com o texto a ser filtrado (no caso um dos índices de $_POST).

 

Há outras maneiras melhores, mas essa é uma delas.

 

Se não souber como fazer, pode procurar também por PHP Badword Filter no Oráculo

Compartilhar este post


Link para o post
Compartilhar em outros sites

e como ja falei la em cima ja tentei usar muitos filtros mas nenhum funcionava ja tentei usar esses aqui...

 

<?
/*
Caso preciso colocar mais uma palavra no filtro é só seguir o exemplo :
$filtro[3]="teste";
*/
$filtro[0]="teste1";
$filtro[1]="teste2";
$filtro[2]="teste3";
/*
Procura uma determinada palavra em uma palavra ,caso haja a ocorrência retorna a mensagem vazia.
$filtro array com as palavras proibidas
$msg mensagem a ser verificada
*/
function familiar ($filtro,$msg) {
  $cont=0;
  for($i=0;$i < sizeof($filtro);$i++){
    $str=stristr($msg,$filtro[$i]);
    if(strlen($str)==strlen($filtro[$i])){
       $cont++;
       break;
    }
  }
  if($cont!=0){
    $msg="";
  }
  return $msg;
}
?>

e esse aqui tbm

 

<script> 
function envia(){ 

// crie (na ordem) uma var para cada palavrão 
var a1 = "palavra1" 
var a2 = "palavra2" 
var a3 = "palavra3" 

// cria a var txt com os valores do campo (textarea) 
txt = document.form.texto.value; 

// aqui, faço uma verificação com as 3 var criada acima 
// adicionando mais var(a1, a2,...) aumente também a indexação 
if (txt.indexOf(a1) != -1 || txt.indexOf(a2) != -1 || txt.indexOf(a3) != -1){ 

// retornamos o alerta e paramos a ação 
alert("Você usou uma palavra imprópia para o site, corrija"); 
return false; 
} 
} 
</script>

e nenhum deles funcionou!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A segunda é totalmente inviável pois depende do JavaScript. Se o cara desabilitar, ele burla fácil, fácil.

 

Quanto à tentativa em PHP, por acaso existe a chamada à str_replace()

 

Claro que não e é por isso que não funciona de acordo com o esperado.

 

Essa função não vai substituir o palavrão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu disse, é a possibilidade mais chulé possível. Estudando a linguagem, é possível fazer muito melhor:

 

$texto = str_ireplace( array( 'paçavrao1', 'palavrao2' ), 'xxxxxx', $texto );

No caso usei str_ireplace() para que não seja feita distinção entre maiúsuclas e minúsculas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom eu fiz aqui como você mandou coloquei todas as palavra mais ainda continua a enviar a msg sem bloquear as palavras que coloquei na lista ja tentei muitas e muitas vezes mas n consigo fazer ele filtrar as palavras!

 

dar um help amigo ver se você consegue por favor!

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma solução bem simples

 

 

//mensagem
$msg;
//palavras a serem bloqueadas
$restrito = array('palavrao1', 'palavrao2');

foreach($restrito as $denied)
{
    //tenta encontrar a palavra na mensagem
    $s = strpos($msg, $denied);
 
   //caso encontre, cancela o carregamento
   if($s)
   {
       die('Quebra de segurança. Carregamento cancelado.');
   }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posta o trecho em que você aplicou a substituição.

 

Não é possível, só se você estiver aplicando sobre uma variável e enviando outra.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema não somos apenas nós que não respondemos, e sim você também, que não providenciou aquilo que foi solicitado.

 

No post #9 eu pedi que você mostrasse como você está aplicando a substituição. Eu diria que seria o form_torpedo.php, mas como não sei como está seu código, poste os dois.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu to tentando esse aqui mais n pega de forma nenhuma form_torpedo.php

 

<?php
require('conexao.php');

$texto = strtoupper($_POST['texto']);
$filtro = array('PALAVRÃO1','PALAVRÃO2','ETC');
$i = 0;
While($i < count($filtro))
{
$confere = strpos($texto,$filtro[$i]);

if($confere === 'true')
{
Echo "<script>alert('Não pode ter Palavrões')</script>";
Echo "<script>history.go(-1);</script>";
Exit;
}
$i++;
}

$id = $_POST['id'];
$nome = $_POST['nome'];
$tipo = $_POST['tipo'];
$texto = $_POST['texto'];
mysql_query("INSERT INTO torpedos (nome, tipo, texto) VALUES ('$nome', '$tipo','$texto')");
?>

<script> window.alert('Enviado Com Sucesso'); location.href="cadastro.php"; </script>
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você percebe que nesse código não consta aquilo que postei no Post #6?

 

Experimente trocar todo esse while (desnecessário, diga-se de passagem) pelo conteúdo do Post citado.

 

No trecho que passei eu uso um array inline, no seu caso, você trocaria ele pela variável $filtro

 

Além do mais, pelo fato de eu ter usado str_ireplace(), você não precisaria connverter o texto para maiúsculas com strtoupper() (a menos, é claro, que haja necessidade real)

Compartilhar este post


Link para o post
Compartilhar em outros sites

sinceramente n entendi o que você quis dizer com esses codigos todos... eu apenas peguei esse filtro pronto la no google e coloquei no form_torpedo.php

 

<?php
require('conexao.php');

$texto = str_ireplace( array( 'palavrao1', 'palavrao2' ), 'xxxxxx', $texto );

$id = $_POST['id'];
$nome = $_POST['nome'];
$tipo = $_POST['tipo'];
$texto = $_POST['texto'];
mysql_query("INSERT INTO torpedos (nome, tipo, texto) VALUES ('$nome', '$tipo','$texto')");
?>

<script> window.alert('Enviado Com Sucesso'); location.href="cadastro.php"; </script>
}

testei assim e tbm n deu certo nossa to ficando doido ja!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas é claro que não vai funcionar.

 

Você troca os badwords na variável $texto, certo. Mas str_ireplace() opera sobre uma outra variável (terceiro argumento).

 

Acima dessa linha, por acaso existe algum $texto? Claro que não, então já está errado a partir daí.

 

Se você não viu um erro na tela, sugiro ativar os reportes de erro. Ajuda e muito a descobrir como e onde está errando.

 

Suponhamos que você já tivesse definido $texto antes do uso da função e estivesse tudo certinho. Lá embaixo você sobrescreve a variável $texto com aquilo que vêm via POST e não possui os badwords tratados.

 

Resumindo. Mova a primeira linha do $texto para logo abaixo da linha $_POST['texto']

 

Agora você está dizendo que não entendeu nada com os códigos que eu postei. Você sabe programar? Pergunto porque a solução foi dada de bandeja quase 10 dias atrás e não envolve nada mais que o básico da programação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora você está dizendo que não entendeu nada com os códigos que eu postei. Você sabe programar? Pergunto porque a solução foi dada de bandeja quase 10 dias atrás e não envolve nada mais que o básico da programação

 

sinceramente não sei não, apenas tenho uma webradio e queria colocar esse sistema de torpedo nele, mas vi em muitas outras webradio que tem esse sistema as pessoas ficam divulgando link e usando codigos pra ficar redirecionando paginas e etc... foi por isso q tentei procurar no google se tem algum filtro para isso... e os que encontrei foi esses que postei acima mas como falei, não sei programar apenas peguei o codigo e coloquei no form_torpedo.php :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, tentou a forma como eu te falei, invertendo a posição da linha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Dark Intensity, fórum é um lugar de aprendizado. Se estiver precisando do código pronto, apenas para fazer uso em seu sistema, pode procurar pela Internet ou pedir para alguém fazer pra você.

 

Quando postamos uma sugestão de solução, admite-se que você tenha o mínimo de conhecimento sobre os recursos necessários, ou que tenha formas de aprender sobre tal.

 

O objetivo é que, uma vez que você aprende a fazer, você passa a conseguir se adaptar a diversas necessidades similares à primeira, que te levou a buscar uma solução. Na base do copia-e-cola, você tem apenas um punhado de código, que só vai te servir pra um propósito em exclusivo, qual você não vai sequer entender o que está acontecendo e, em qualquer necessidade diferente dessa, te levará a abrir um novo tópico no fórum além de incansáveis buscas pela Internet.

 

A grande dificuldade (e também a mágica) que envolve os recursos de programação, reside na possibilidade de cada um poder aplicar a sua própria lógica, de forma que lhe seja mais fácil/conveniente. Isso faz com que você tenha que procurar pela Internet por uma solução que atenda à sua necessidade e que também se encaixe à sua lógica, e é aí que está havendo a dificuldade em solucionar o seu problema.

 

Sinceramente, se você não tem interesse em aprender e só quer resolver o seu problema, sugiro que noticie este tópico como resolvido, abra um novo tópico sucinto e direto, solicitando um programador para resolver seu problema. Este tópico será movido para a sessão apropriada mas, já lhe adianto de antemão, dificilmente você encontrará alguém que se disponha a lhe prestar o serviço de graça, uma vez que antes de tudo, será necessário estudar a lógica que foi aplicada ao seu sistema para então adaptar a solução à sua realidade.

 

Boa sorte com suas buscas.

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.