Chi non si è mai trovato di fronte al problema di gestire il "vocabolario", a volte fin troppo colorato, utilizzato dai nostri utenti in un nostro forum o guestbook ?!
Io faccio parte sicuramente di quell'insieme di persone, e per mia comodità ho creato un piccolo UserControl, estendendo la classe System.Web.UI.WebControls.TextBox, che, sfruttando al massimo le opportunità che mi offre l'ereditarietà del modello ad oggetti di C#.NET, fa un controllo su quello che è il testo d'input inserito dall'utente.
Estendendo una classe del Framework, creo in pratica un suo "figlio" che contiene tutte le caratteristiche del padre (metodi, propietà ed eventi ...) con la possibilità di aggiungerne delle proprie. Per estendere una classe uso questa sintassi:
public class controlloFiglio : controlloPadre Nel mio caso ho semplicemente aggiunto un metodo (che ho chiamato "maleducato"), che ritorna un valore booleano se trova una parolaccia nel testo passatogli come parametro. In questo modo posso semplicemente controllare la correttezza del linguaggio chiamando il mio metodo e vedere se il suo valore di ritorno è vero o falso...
if(txt.maleducato(txt.Text))
// Utente maleducato ...
else
// Utente bravo ...
Al suo interno, il metodo "maleducato", elimina tutti quei caratteri che di solito vengono usati per aggirare questo tipo di meccanismi, ed infine controlla che nel testo non siano presenti tutte quelle parole che secondo voi non vanno usate, prendendole da un "array di parolacce", precedentemente definito.
namespace Peppe.Articoli
{
using System;
public class BadWordsTextBox : System.Web.UI.WebControls.TextBox
{
public bool maleducato(string input)
{
bool maleducato = false;
string[] daTogliere = {" ",":",";","°","\\","|",
"!","?","=",")","(",".","#","/","_",",","-",
"*","+","@","^","£","$","%","&","<",">"};
foreach(string s in daTogliere)
{
input = input.Replace(s,string.Empty);
}
string[] parolacce = {"stronzo", "idiota", "imbecille"};
foreach(string str in parolacce)
{
if(input.ToLower().IndexOf(str) <= 0)
{
maleducato = true;
break;
}
else
maleducato = false;
}
return maleducato;
}
}
} Una volta creata la dll (il codice di creazione lo trovate nel file make.bat presente nel file di sorgenti da scaricare) e messa nella directory /bin, basta creare una WebForm ASP.NET di prova nella quale inserire il riferimento al namespace dov'è presente la classe che vogliamo utilizzare.
<%@ Page Language="C#" Debug="true">
<%@ Register TagPrefix="pep" Namespace="Peppe.Articoli" Assembly="Peppe.Articoli">
<script runat="server">
private void prova(object sender, EventArgs e)
{
if(txt.maleducato(txt.Text))
lbl.Text = ""Maleducato !"";
else
lbl.Text = txt.Text;
}
</script>
<html>
<head>
<title>BadWordsTextBox</title>
</head>
<body>
<form runat="server">
<pep:BadWordsTextBox id="txt" runat="server" />
<br />
<asp:Button id="btn" runat="server" onClick="prova" Text="Prova" />
<br />
<asp:Label id="lbl" runat="server" />
</form>
</body>
</html>
|
|
|