asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 60289
ASPCode.it - Store

  > > Tips

BadWordsTextBox
di Giuseppe Marchi

Data di pubblicazione: 15/11/2004        Voto della community: 4,00 (Votanti: 1)

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 offre l'ereditarietā del modello ad oggetti di C#.NET, effettua 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>

Per scaricare lo zip con il sorgente di questo articolo utilizzare il link che segue:


Si ringrazia PeppeDotNet per la gentile concessione dell'articolo.




Utenti connessi: 60289