Ir para conteúdo
Fórum Script Brasil
  • 0

Filtro De Palavras!


lampiao_muléstia

Pergunta

eae galera....

cara, eu to precisando fazer um filtro de palavras para um Mural de Recados. Estou querendo fazer isso justamente porque tem uns gringos que tipo cadastra meu site em robos, que fica lancando os recados la automaticamente...... o esquema é o seguinte....

Qeria fazer uma relação de palavras....

E se alguma destas palavras estiverem incluidas no meu textarea...

Após eu clicar em ENVIAR RECADO, o recado não seria gravado no DB...

Valeu

Um Abraço....

Link para o comentário
Compartilhar em outros sites

22 respostass a esta questão

Posts Recomendados

  • 0

Use um filtro de palavra para detectar se a palavra existi, se ela existir ao invés de você filtrar a palavra você impede que ela seja gravada (isso pode ser feita comparando as 2 frases, se elas forem diferentes após a filtragem é porque alguma palavra foi detectada)...

Ai está um exemplo de código para filtro...

Link para o comentário
Compartilhar em outros sites

  • 0

if ($texto_original == $texto_filtrado){
//Aqui grava pois o texto original é igual ao filtrado
}else{
//Aqui não faz nada pois os textos são diferente
}

Obviamente o $texto_original é o que vem do form e o $texto_filtrado vai ser o resultado que sair do código de filtro...

Link para o comentário
Compartilhar em outros sites

  • 0
<?php

$textofiltrado = ("viagra");

$textofiltrado = ("cialis");

$textofiltrado = ("prozac");

$textofiltrado = ("cheap");

if ($texto_original == $texto_filtrado){

//Aqui grava pois o texto original é igual ao filtrado

}else{

//Aqui não faz nada pois os textos são diferente

}

?>

digamos que eu queria bloquear estas palavras ai em cima, ficaria assim?

Link para o comentário
Compartilhar em outros sites

  • 0

eae cara........curte, to usando extensao do dreamweaver pra fazer isso ai......

meu código esta da seguinte forma

<?php

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")

{

$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

switch ($theType) {

case "text":

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

break;

case "long":

case "int":

$theValue = ($theValue != "") ? intval($theValue) : "NULL";

break;

case "double":

$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";

break;

case "date":

$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";

break;

case "defined":

$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;

break;

}

return $theValue;

}

$editFormAction = $_SERVER['PHP_SELF'];

if (isset($_SERVER['QUERY_STRING'])) {

$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);

}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {

$insertSQL = sprintf("INSERT INTO mural (nome, texto, `data`, ip) VALUES (%s, %s, %s, %s)",

GetSQLValueString($_POST['nome'], "text"),

GetSQLValueString($_POST['texto'], "text"),

GetSQLValueString($_POST['data'], "text"),

GetSQLValueString($_POST['ip'], "text"));

mysql_select_db($database_conn, $conn);

$Result1 = mysql_query($insertSQL, $conn) or die(mysql_error());

$insertGoTo = "recados_inicial.php";

if (isset($_SERVER['QUERY_STRING'])) {

$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";

$insertGoTo .= $_SERVER['QUERY_STRING'];

}

header(sprintf("Location: %s", $insertGoTo));

}

$maxRows_rsRecados = 10;

$pageNum_rsRecados = 0;

if (isset($_GET['pageNum_rsRecados'])) {

$pageNum_rsRecados = $_GET['pageNum_rsRecados'];

}

$startRow_rsRecados = $pageNum_rsRecados * $maxRows_rsRecados;

mysql_select_db($database_conn, $conn);

$query_rsRecados = "SELECT * FROM mural ORDER BY registro DESC";

$query_limit_rsRecados = sprintf("%s LIMIT %d, %d", $query_rsRecados, $startRow_rsRecados, $maxRows_rsRecados);

$rsRecados = mysql_query($query_limit_rsRecados, $conn) or die(mysql_error());

$row_rsRecados = mysql_fetch_assoc($rsRecados);

if (isset($_GET['totalRows_rsRecados'])) {

$totalRows_rsRecados = $_GET['totalRows_rsRecados'];

} else {

$all_rsRecados = mysql_query($query_rsRecados);

$totalRows_rsRecados = mysql_num_rows($all_rsRecados);

}

$totalPages_rsRecados = ceil($totalRows_rsRecados/$maxRows_rsRecados)-1;

$ipzica = getenv("REMOTE_ADDR");?>

na verdade não quero que faça a troca da palavra censurada por outra palavra ou imagem, eu gostaria que simplesmente não fosse adicionado um recado.....

valeu?

Editado por lampiao_muléstia
Link para o comentário
Compartilhar em outros sites

  • 0

Eu sei que você não quer que a palavra seja trocada mas acontece que usando o filtro você vai ter 2 frases, a que veio do form e a censurada, se as 2 forem diferentes é porque havia alguma palavra proibida, logo, não faz nada, se as 2 forem iguais é porque não havia nenhum palavra proibida logo insere no BD.

Esses $_POST['xxxxx'] (os xxxx são os nomes usados no seu script) recebem os dados vindos do formulário, então, você tem que pegar o $_POST['xxxxx'] que corresponde ao campo de texto, usar ele para passar no filtro, pegar o resultado do filtro e comparar com o $_POST['xxxxx'] se forem diferentes não faz nada, se forem iguais grava, logo a parte do script que faz a gravação (no seu caso é $Result1 = mysql_query($insertSQL, $conn) or die(mysql_error());) deve ir na parte do if que corresponde as frases iguais...

Link para o comentário
Compartilhar em outros sites

  • 0

O código do filtro tem uma parte:

$filtro = array (

"você" => "você",

"beleza" => "beleza",

"também" => "também"

);

A primeira é a forma errada a segunda é a certa no seu caso você pode colocar qualquer coisa na segunda pois é apenas para marcar a frase como diferente, então poderia ser algo do tipo:

$filtro = array (

"viagra" => "######",

"porn" => "######",

);

Etc... assim quando a frase a ser filtrada passar pelo filtro as palavras programadas serão alteradas para ##### e ai quando se comparar a frase filtrada com a original se o filtro agiu (e substitui palavras) as 2 não vai coincidir...

Link para o comentário
Compartilhar em outros sites

  • 0
$filtro = $_POST['texto'];

$filtro = array (

"viagra" => "######",

"porn" => "######",

);

if ($_POST['texto'] == $filtro){

//Aqui grava pois o texto original é igual ao filtrado

}else{

//Aqui não faz nada pois os textos são diferente

}quote]

Mais ou menos isso ai?

Editado por lampiao_muléstia
Link para o comentário
Compartilhar em outros sites

  • 0

Seria legal você dar uma olhada na página com o código do Filtro, pois o que eu passei (e escrevi na minha frase) foi apenas uma parte do código do filtro, para facilitar a sua vida, vou o filtro COMPLETO é o código abaixo:

<?php

function Filtro($texto){
$filtro = array (
          "você" => "você",
          "beleza" => "beleza",
          "também" => "também"
          );

foreach ($filtro as $errado => $certo){
    $texto = preg_replace ("/".$errado."/i", $certo, $texto);
}
return $texto;
}

$x = "você você beleza beleza também também";
echo Filtro ($x);
?>

Link para o comentário
Compartilhar em outros sites

  • 0

eae chará.....

como lhe falei, meu php num e la essas coisa mas está indo.......heheh

da uma olhada no que fiz ai, tem nexo isso?:

function Filtro($_POST['texto']){

$filtro = array (

"viagra" => "xxx",

"cialis" => "xxx",

"porn" => "xxx"

);

foreach ($filtro as $errado => $certo){

$texto = preg_replace ("/".$errado."/i", $certo, $texto);

}

return $texto;

}

if ($_POST['texto'] == $filtro){

$Result1 = mysql_query($insertSQL, $conn) or die(mysql_error());

}else{

//que código eu coloco aqui para direcionar para uma página qualquer ?

}

Link para o comentário
Compartilhar em outros sites

  • 0
$texto = $_POST['texto'];

function Filtro($texto){

$filtro = array (

"viagra" => "xxx",

"cialis" => "xxx",

"porn" => "xxx"

);

foreach ($filtro as $errado => $certo){

$texto = preg_replace ("/".$errado."/i", $certo, $texto);// oque é esse $errado$certo preciao mesmo desse trem???rsrs

}

return $texto;

}

if ($_POST['texto'] == $texto){

$Result1 = mysql_query($insertSQL, $conn) or die(mysql_error());

}else{

//que código eu coloco aqui para direcionar para uma página qualquer ?

}

Link para o comentário
Compartilhar em outros sites

  • 0

if ($_POST['texto'] == $filtro){

Por

if ($texto == Filtro ($texto)){

Quanto ao:

$texto = preg_replace ("/".$errado."/i", $certo, $texto);// oque é esse $errado$certo preciao mesmo desse trem???rsrs

» http://www.php.net/preg_replace

E ao:

//que código eu coloco aqui para direcionar para uma página qualquer ?

Ai você coloca o que quiser... o script é seu, você decide, ele só vai cair ai se as 2 frases forem diferentes... logo você pode dar um alert, dizendo que foi encontrado uma palavra proibida, ou etc...

Link para o comentário
Compartilhar em outros sites

  • 0
$texto = $_POST['texto'];

function Filtro($texto){

$filtro = array (

"viagra" => "xxx",

"cialis" => "xxx",

"porn" => "xxx"

);

foreach ($filtro as $errado => $certo){

$texto = preg_replace ("/".$errado."/i", $certo, $texto);// oque é esse $errado$certo preciao mesmo desse trem???rsrs

}

return $texto;

}

if ($_POST['texto'] == $texto){

$Result1 = mysql_query($insertSQL, $conn) or die(mysql_error());

}else{

//que código eu coloco aqui para direcionar para uma página qualquer ?

}

Seria isso?

da uma olhada do cometario que coloquei ali em cima....

valeu,, até +

Link para o comentário
Compartilhar em outros sites

  • 0

Editei o meu post anterior para acrescentar a resposta ao seu comentário...

E eu disse para você substituir:

if ($_POST['texto'] == $filtro){

Por

if ($texto == Filtro ($texto)){

Porque se você colocar $_POST['texto'] == $texto, ele sempre vai retornar como os 2 sendo iguais...

Link para o comentário
Compartilhar em outros sites

  • 0
$texto = $_POST['texto'];

function Filtro($texto){

$filtro = array (

"viagra" => "xxx",

"cialis" => "xxx",

"porn" => "xxx"

);

foreach ($filtro as $errado => $certo){

$texto = preg_replace ("/".$errado."/i", $certo, $texto);

}

return $texto;

}

if ($texto == Filtro ($texto)){

$Result1 = mysql_query($insertSQL, $conn) or die(mysql_error());

}else{

//não acontece nada

}

cara, dei uma olhada la no PHP.NET e vi que a função serve para substituir tal texto por outro, mas ai lhe pergunto novamente, eu já não estou fazendo a substituição na seguinte linha de código:

function Filtro($texto){

$filtro = array (

"viagra" => "xxx",

"cialis" => "xxx",

"porn" => "xxx"

);

valeu até +

Link para o comentário
Compartilhar em outros sites

  • 0

Resumindo, mesmo que eu não tenha usado antes essas variaveis ai, $errado e $certo

meu código está zero bala do jeito que está ai abaixo:????

$texto = $_POST['texto'];

function Filtro($texto){

$filtro = array (

"viagra" => "xxx",

"cialis" => "xxx",

"porn" => "xxx"

);

foreach ($filtro as $errado => $certo){

$texto = preg_replace ("/".$errado."/i", $certo, $texto);

}

return $texto;

}

if ($texto == Filtro ($texto)){

$Result1 = mysql_query($insertSQL, $conn) or die(mysql_error());

}else{

//não acontece nada

}

Link para o comentário
Compartilhar em outros sites

  • 0

O que acontece é o seguinte... você tem um array chamado filtro... o foreach chama os elemento do array e eles assumem o valor de $errado e $certo (por isso o $filtro as $errado => $certo)...

O código teoricamente está ok...

Link para o comentário
Compartilhar em outros sites

  • 0

iaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,,,, veio você sabe oque que é salva vidas?.........

...você é um desses...hehehhe

deu certo demais da conta, valeu cara,

Obrigadão pela paciência ai

olhe ai o trabalho

http://www.comfestas.com.br/inicial.php

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...