Ir para conteúdo

POWERED BY:

Arquivado

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

lampiao_muléstia

[RESOLVIDO] Filtro de Palavras

Recommended Posts

eae galera....cara, eu to precisando fazer um filtro de palavras para um Mural de Recados. Estou querendo fazer isso justamente pq 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...ValeuUm Abraço....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Supondo que você tenha as palavras proibidas num array, você pode usar foreach para verificar se alguma delas consta no texto. Por exemplo:

 

$proibidas = array(
					"spam",
					"proibida"
				  );

$x = "não poste spam";

foreach ($proibidas as $palavra)
{
	if(preg_match("/" . $palavra . "/i", $x))
	{
		echo "ERRO";
	}
}

Você pode integrar com banco de dados, fazer algo mais incrementado, mas a idéia é mais ou menos essa. ;)

 

Abraços,

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, valeu pela dica, mas curte só, eu to tendando fazer isso usando extensões do deeamweaver.....então meu conhecimento de PHP é bem limitado....... meu código ta da seguinte forma, aonde eu colocaria esse script que tu me falou?

<?phpfunction 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");?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem que fazer essa verificação antes de criar a variável $insertSQL.

 

Para mais detalhes sobre foreach e preg_match:

http://www.php.net/foreach

http://www.php.net/preg_match

 

Abraços,

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

eae galera....obrigado ai Beraldo pelas AAjudas, e o resultado foi

//INICIO DO FILTRO $texto = $_POST['texto']; function Filtro($texto){ $filtro = array ( "viagra" => "xxx", "cialis" => "xxx", "---" => "xxx", "href" => "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{ //ação que você quiser }//FIM DO FILTRO

ta funcionando 100%..hehefalouuuuuuuuuuuuuuusSSS

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.