bloccare parole non consentite

Bruce5000

Utente Attivo
14 Ott 2007
106
0
0
Salve, ho un sito che ha un form in cui un utente può inserire il proprio sito web, email,
banner, ecc..
Nel form c'è anche un campo textarea in cui inserire le parole chiavi; devo fare un controllo di
queste parole in modo da bloccare l'invio del form se un utente inserisce le parole chiavi
non consentite che sono memorizzate in un database.
Ho fatto così ($parolechiave contiene il valore della textarea via POST):
PHP:
<?php
 $sql = mysql_query("SELECT * FROM spam_aristotele WHERE keyword LIKE '%".$parolechiave."%'") or die (mysql_error());

 if(mysql_num_rows($sql) > 0)
 {
  echo "Non si accettano siti spam.<br>";
 }
?>
Se si inserisce una singola parola funziona ma se inserisco 2 o più parole il controllo non va.
Potete aiutarmi?
 
Ciao, se ho capito il problema la risoluzione potrebbe seguire i seguenti step:

Suddividere la stringa del valore inserito nel textbox in un array contenente per ciascun item una parola singola.
Successivamente fare il check per ciascuna parola se è contenuta all'interno della blacklist.
Se utilizzi quest'approccio ti scongilio di inserire le parole all'interno del db poichè il db avrebbe troppe query.
A prescindere da questo php offre svariate funzioni per il filter e la verifica.
Nella fattispece, potresti estrarre tutte le keywork della blacklist presenti nel db, inserirle in un array e fare un check incrociato con l'array derivante dalla suddivisione in parole della stringa della textbox.
Il check per verificare se l'elemento è contenuto nell'array puoi farlo tramite la funzione in_array(valore, array) mentre la conversione da stringa ad array puoi farla tramite explode.
La funzione array_walk, infine, consente di applicare una funziona a tutti gli elementi di un array.
Quest'ultima credo faccia proprio al caso tuo..

Fammi sapere se è tutto chiaro o ci sono problemi
Ciao, Ciro
 
ho fatto così ma ancora non va
PHP:
$array_textarea=explode("  ",$parolechiave);
	
$sql = mysql_query("SELECT * FROM spam_aristotele") or die (mysql_error());
while($row = mysql_fetch_array($sql))
{
$parole = $row['keyword']." ";
}
	foreach($array_textarea as $array_m)
	{
	      if(in_array($parole, $array_m)) 

	{
	      echo "Non si accettano siti spam.<br><br>\n";
	}
	}
 
Il sistema che usi, oltre a non funzionare (e al momento non posso controllare perché) presenta alcuni problemi, uno dei tanti è che se una delle parole proibite viene inserita tra altri caratteri, ad esempio proibito,, il controllo non funziona.
 
Ciao; il codice non avrò modo di provarlo fino a lunedi.
Per il problema segnalato da alessandro potreesti ovviare sostituendo tutti i caratteri di punteggiatura con uno spazio..
 

Discussioni simili