Herbert1204: zensierte Wörter

Hallo

Ich will eine Seite mit einer Google-Maps-Landkarte erstellen.
Dazu habe ich ein Text-, und ein Hiddenfeld mit Button gebastelt.

Die Funktionsweise ist folgendermaßen:
Die User geben den Link von der Google-Maps-Seite in das Textfeld ein. Durch Berühren des Buttons wird der Inhalt des Textfeldes mit einem Zusatz in das Hiddenfeld übertragen. Durch den Klick auf den Button wird die ausgewählte Landkarte auf der Seite angezeigt.

Mögliches Problem:
Damit das Ganze funktioniert, habe ich ein Script eingefügt, was überprüft, ob bei der Eingabe im Textfeld  'http://maps.google'  steht.  Weil aber bei Google-Maps auch der html-Code den benötigten Text hat, möchte ich das Script   'zensierte Wörter' einfügen.

Nur funktioniert dieses Script nicht so wie es soll. Wenn ich das Script unverändert in meine Seite einbaue, erscheint bei korrekter Eingabe eine Fehlermeldung. Wenn ich ein zensiertes Wort eingebe, wird der Fehler ordnungsgemäß angezeigt. Nach berichtigen der Eingabe wird der Fehler aber weiterhin angezeigt.
Kann mir jemand dieses Script für mich berichtigen? Es soll nur ein Textfeld haben. Als zensiertes Wort soll    'iframe'  eingegeben werden.

Hier ist das Script 'zensierte Wörter':

<script language="javascript">

function badword() {
var entry=5; /* Anzahl der Wörter */
var zensur = new Array();

/* Beginn der Badwordliste */
zensur[1] = "scheisse";
zensur[2] = "Arsch";
zensur[3] = "shit";
zensur[4] = "fuck";
zensur[5] = "Sau";

if (document.form.name.value=="") {
alert ("Bitte geben Sie einen Namen ein"); /* Aufforderung (Name angeben) */
   return false;
}
if (document.form.kommentar.value=="") {
alert ("Bitte geben Sie einen Kommentar ein"); /* Aufforderung (Kommentar angeben) */
return false;
}
for (i=1; i<=entry; i++) /* Beginn der Zählerschleife */
{
if (document.form.kommentar.value.indexOf(zensur[i],0)!=-1)
zzensur="Du hast ein nichterlauptes Wort benutzt: nWort: "+zensur[i]+"";
}
if (zzensur!=0) {
alert ("*********** Fehler **********n"+zzensur+"");
return false;
}
}
</script>

<form name="form" method="POST" action="mailto:Ihre@Mail.de?subject=Mail mit Zensur" enctype="text/plain" onSubmit="return badword()">
<font class="stb">Name:<br>
<input type=text name=name size=30><br>
<font class="stb">Kommentar:<br>
<textarea name="kommentar" ROWS=4 COLS=40 wrap=virtual></textarea><br>
<INPUT TYPE="submit" VALUE="senden">
    </font></font></form>

Hier habe ich das Script was ich in meine Seite einbauen will.

<script language="JavaScript">
function bestaetigung() {
var name=document.formular.Name.value;
var daten="" + name +"&output=embed";
document.formular.Link.value = daten;
}
</script>

<script language="JavaScript">
function validate_form()
{
if (document.formular.Link.value.indexOf('http://maps.google')==-1)
{ alert ("                Dies ist kein gültiger Link. \n\nFüge bitte den  korrekten Link in das Textfeld ein.");
  document.formular.Name.focus();
  return false; }
}
</script>

<form name="formular">

<input type="text" name="Name" onmouseout="bestaetigung()" onMouseDown="document.getElementById('Name').value = ''" Style="font-weight:bold; font-size:11pt; width:500px;" value=" f&uuml;ge hier den Link ein und klick anschlie&szlig;end auf den Button" size="20">
<input type="hidden" size="40" name="Link">

<input type="button" onmouseover="return validate_form()" onclick="window.location.href=document.formular.Link.value" value="Gehe zu">

</form>

<hr size="10" color="#CCFFCC">

<iframe width="100%" height="500" src="http://maps.google.de" scrolling="no" marginheight="0" marginwidth="0" frameborder="0">
</iframe>

  1. Ohne deinen Code jetzt genau angeschaut zu haben - du hast einen Konzeptionellen Fehler

    Wenn jemand nach Dessau fahren möchte, schlägt dein Badwordfilter Alarm da deine-indexOf() bei Sau anspringt.

    1. Hi,

      Wenn jemand nach Dessau fahren möchte, schlägt dein Badwordfilter Alarm da deine-indexOf() bei Sau anspringt.

      nee, nur wenn derjenige ein großes 'S' in der Mitte verwendet. Herbert vergleicht case-sensitive.
      Daher ist auch das Marschieren unkritisch. Aber ein Mordshit würde auffallen. Oder der Arschäologe. Hmm, irgendwas ist merkwürdig. ;-)

      Ciao,
       Martin

      --
      Man soll den Tag nicht vor dem Abend loben.
      Und den Mann nicht vor dem Morgen.
        (alte Volksweisheit)
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. nee, nur wenn derjenige ein großes 'S' in der Mitte verwendet. Herbert vergleicht case-sensitive.

        Punkt für dich - aber ich hol' zum Gegenangriff aus: Herscheid im Sauerland ;)

        Oder einer von diesen: Sauzin, Saustrup, Saulheim, Saulgrub, Sauldorf, Sauerthal, Sauerlach, Sauensiek oder Saubach

        1. Hallo,

          nee, nur wenn derjenige ein großes 'S' in der Mitte verwendet. Herbert vergleicht case-sensitive.
          Punkt für dich - aber ich hol' zum Gegenangriff aus: Herscheid im Sauerland ;)

          Sauber. :-)
          Darauf ein Kirscheissorbet. Ach nee, "scheisse" hat er zwar klein, aber nur mit 'e' am Schluss.

          *scnr*
           Martin

          --
          Zwei Mäuse treiben's miteinander. Sagt der Mäuserich: "Hoffentlich ist nicht wieder alles für die Katz."
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          1. Ich finde die ganze Idee, wenn ichs mal ehrlich sagen darf, sinnlos.
            Wenn jemand irgendein Wort andeuten will, dann macht er es mit Punkten oder sonst irgendwie, sobald er merkt dass es direkt nicht geht.
            Dann soll er doch gleich schreiben was er denkt. Solche Zensurfunktionen haben für mich etwas naives und "zu sehr sauberes" und bringen tun sie ja doch nix.

            1. Hallo
              Ich freu mich, dass Ihr alle sehr viel Spaß mit meiner Seite hattet.
              Aber nun zu meinem Problem.
              Ich hatte geschrieben, dass ich einen bestimmten Text benötige, der in ein Textfeld eingegeben wird.

              Hier habe ich das Script was ich in meine Seite einbauen will.

              <script language="JavaScript">
              function bestaetigung() {
              var name=document.formular.Name.value;
              var daten="" + name +"&output=embed";
              document.formular.Link.value = daten;
              }
              </script>

              <script language="JavaScript">
              function validate_form()
              {
              if (document.formular.Link.value.indexOf('http://maps.google')==-1)
              { alert ("                Dies ist kein gültiger Link. \n\nFüge bitte den  korrekten Link in das Textfeld ein.");
                document.formular.Name.focus();
                return false; }
              }
              </script>

              <form name="formular">

              <input type="text" name="Name" onmouseout="bestaetigung()" onMouseDown="document.getElementById('Name').value = ''" Style="font-weight:bold; font-size:11pt; width:500px;" value=" f&uuml;ge hier den Link ein und klick anschlie&szlig;end auf den Button" size="20">
              <input type="hidden" size="40" name="Link">

              <input type="button" onmouseover="return validate_form()" onclick="window.location.href=document.formular.Link.value" value="Gehe zu">

              </form>

              <hr size="10" color="#CCFFCC">

              <iframe width="100%" height="500" src="http://maps.google.de" scrolling="no" marginheight="0" marginwidth="0" frameborder="0">
              </iframe>

              Hier ist das Script 'zensierte Wörter', diesmal nur mit dem Wort 'iframe':

              <script language="javascript">

              function badword() {
              var entry=1; /* Anzahl der Wörter */
              var zensur = new Array();

              /* Beginn der Badwordliste */
              zensur[1] = "iframe";

              if (document.form.name.value=="") {
              alert ("Bitte geben Sie einen Namen ein"); /* Aufforderung (Name angeben) */
                 return false;
              }
              if (document.form.kommentar.value=="") {
              alert ("Bitte geben Sie einen Kommentar ein"); /* Aufforderung (Kommentar angeben) */
              return false;
              }
              for (i=1; i<=entry; i++) /* Beginn der Zählerschleife */
              {
              if (document.form.kommentar.value.indexOf(zensur[i],0)!=-1)
              zzensur="Du hast ein nichterlauptes Wort benutzt: nWort: "+zensur[i]+"";
              }
              if (zzensur!=0) {
              alert ("*********** Fehler **********n"+zzensur+"");
              return false;
              }
              }
              </script>

              <form name="form" method="POST" action="mailto:Ihre@Mail.de?subject=Mail mit Zensur" enctype="text/plain" onSubmit="return badword()">
              <font class="stb">Name:<br>
              <input type=text name=name size=30><br>
              <font class="stb">Kommentar:<br>
              <textarea name="kommentar" ROWS=4 COLS=40 wrap=virtual></textarea><br>
              <INPUT TYPE="submit" VALUE="senden">
                  </font></font></form>

              1. Hallo Herbert1204,

                var entry=1; /* Anzahl der Wörter */
                var zensur = new Array();

                /* Beginn der Badwordliste */
                zensur[1] = "iframe";

                for (i=1; i<=entry; i++) /* Beginn der Zählerschleife */
                ... zensur[i ]...

                nur zur Info: in Javascript werden Arrayindizes von 0 an gezählt:

                var zensur = new Array;  
                zensur[0] = "iframe";
                

                oder kürzer

                var zensur = ["iframe","...","..."];

                und dann

                for(var i=0;i<zensur.length;i++)  
                 ... zensur[i] ...
                

                Gruß, Jürgen

      2. 'ǝɯɐu$ ıɥ

        Wenn jemand nach Dessau fahren möchte, schlägt dein Badwordfilter Alarm da deine-indexOf() bei Sau anspringt.

        nee, nur wenn derjenige ein großes 'S' in der Mitte verwendet. Herbert vergleicht case-sensitive.

        Was ist mit dem Örtchen Fucking (die von der Biermarke Fucking Hell)?

        ssnɹƃ
        ʍopɐɥs

        --
        I like children. If they're properly cooked.
        - W.C. Fields
        1. Hallo Shadow,

          nee, nur wenn derjenige ein großes 'S' in der Mitte verwendet. Herbert vergleicht case-sensitive.

          Was ist mit dem Örtchen Fucking (die von der Biermarke Fucking Hell)?

          nee, nur wenn derjenige ein kleines 'f' am Anfang verwendet. Herbert vergleicht case-sensitive. [1]

          Freundliche Grüße

          Vinzenz

          [1] schamlos bei Martin abgekupfert :-)

  2. Hier ist das Script 'zensierte Wörter':

    Das ist Mist!

    <script language="javascript">

    Woher hast du das language Attribut? Und wo ist das notwendige Type Attribut?

    function badword() {

    Du kannst einen einfachen, aber halbwegs (Für JS sind Umlaute Wortgrenzen) als funktionierenden Filter mit einem regulären Ausdruck bauen:

    function badwordfilter(val) {  
        if(!val) return;  
        var badword = ['fuck', 'scheisse'];  
        var reg = new RegExp( '\\b(' + badword.join('|') + ')\\b');  
      
        return reg.test(val);  
    }  
    
    

    Aber auch ansonsten zeigt dein Code viele Schwächen. Warum verwendest du location.href obwohl du ein Formular hast? Und wenn schon, musst du dich auch um die Kodierung der Daten kümmern, ansonsten werden Sonderzeichen nicht richtig übertragen.

    Struppi.

    1. Hallo,

      Und wenn schon, musst du dich auch um die Kodierung der Daten kümmern, ansonsten werden Sonderzeichen nicht richtig übertragen.

      ...und die um Groß-/Kleinschreibung und um die Verkotung und um... ach Fuck!

      Don P

      1. Und wenn schon, musst du dich auch um die Kodierung der Daten kümmern, ansonsten werden Sonderzeichen nicht richtig übertragen.

        ...und die um Groß-/Kleinschreibung und um die Verkotung und um... ach Fuck!

        Danke für den Hinweis. Also so

        function  badwordfilter(val)  {  
            if(!val) return;  
            var badword = ['fuck', 'scheisse'];  
            var reg = new RegExp( '\\b(' + badword.join('|') + ')\\b', 'gi');  
          
            return reg.test(val);  
        }  
        
        

        Struppi.

        1. Hallo Struppi

          Leider habe ich deine Antwort nicht verstanden.
          Hier beschreibe ich noch einmal mein Problem.

          Ich will eine Seite mit einer Google-Maps-Landkarte erstellen.
          Dazu habe ich ein Text-, und ein Hiddenfeld mit Button gebastelt.

          Die Funktionsweise ist folgendermaßen:
          Die User geben den Link von der Google-Maps-Seite in das Textfeld ein. Durch Berühren des Buttons wird der Inhalt des Textfeldes mit einem Zusatz in das Hiddenfeld übertragen. Durch den Klick auf den Button wird die ausgewählte Landkarte auf der Seite angezeigt.

          Mögliches Problem:
          Damit das Ganze funktioniert, habe ich ein Script eingefügt, was überprüft, ob bei der Eingabe im Textfeld  'http://maps.google'  steht.  Weil aber bei Google-Maps auch der html-Code den benötigten Text hat, muß der html-Code blockiert werden.

          Könntest du mir das untenstehende Script mit dem zensierten Wort ' iframe ' für mich vervollständigen?
          Als Fehlermeldung soll folgender Text erscheinen:
          'Du hast den "HTML-Code zum Einbetten in eine Website" eingefügt.   Füge bitte den  korrekten Link in das Textfeld ein.'

          Im Voraus schon einmal Vielen Dank

          Hier ist das Script:

          <script language="JavaScript">
          function bestaetigung() {
          var name=document.formular.Name.value;
          var daten="" + name +"&output=embed";
          document.formular.Link.value = daten;
          }
          </script>

          <script language="JavaScript">
          function validate_form()
          {
          if (document.formular.Link.value.indexOf('http://maps.google')==-1)
          { alert ("                Dies ist kein gültiger Link. \n\nFüge bitte den  korrekten Link in das Textfeld ein.");
            document.formular.Name.focus();
            return false; }
          }
          </script>

          <form name="formular">

          <input type="text" name="Name" onmouseout="bestaetigung()" onMouseDown="document.getElementById('Name').value = ''" Style="font-weight:bold; font-size:11pt; width:500px;" value=" f&uuml;ge hier den Link ein und klick anschlie&szlig;end auf den Button" size="20">
          <input type="hidden" size="40" name="Link">

          <input type="button" onmouseover="return validate_form()" onclick="window.location.href=document.formular.Link.value" value="Gehe zu">

          </form>

          <hr size="10" color="#CCFFCC">

          <iframe width="100%" height="500" src="http://maps.google.de" scrolling="no" marginheight="0" marginwidth="0" frameborder="0">
          </iframe>

          1. Hallo Herbert,

            Hier beschreibe ich noch einmal mein Problem.

            es wäre eine hervorragende Idee, endlich selbst aktiv an *Deinem* Problem mitzuarbeiten, zum Beispiel herauszustellen, wo Du hängenbleibst - statt zum dritten Mal den gleichen unkommentierten Code abzuladen.

            Freundliche Grüße

            Vinzenz

            1. Hallo Vinzenz

              Das Problem bei mir ist, daß mir selbst die Grundkenntnisse des Programmieren fehlen. Ich habe bisher nur fertige Scripte in eine html-Seite eingebaut. Wenn Sie nicht so waren, wie sie sollten, habe ich beim Script hier und dort etwas verändert. Und siehe da, es funktionierte. Meistens!!

              Wenn ich nicht weiter wußte, habe ich etwas anderes gemacht oder bin ins Forum gegangen.

              Ich habe auch keine Zeit irgendwelche Lehrgänge und Ähnliches zu besuchen.

              Herbert

              1. Mahlzeit Herbert1204,

                Das Problem bei mir ist, daß mir selbst die Grundkenntnisse des Programmieren fehlen.

                Dann solltest Du Dir diese aneignen. <http://de.selfhtml.org/javascript/intro.htm@title=SELFHTML bietet dazu gewisse Möglichkeiten> - ohne grundlegendes Verständnis dafür, wie Programmcode abgearbeitet wird usw. ist es allerdings nicht einfach.

                Ich habe auch keine Zeit irgendwelche Lehrgänge und Ähnliches zu besuchen.

                Wenn Du nicht die Zeit hast, Dich in absolut notwendige Grundlagen einzuarbeiten, scheint das Projekt, an dem Du zur Zeit arbeitest, ja nicht so wichtig zu sein. Weiterhin sind Lehrgänge nicht erforderlich - lediglich einige Stunden, um eins oder mehrere der verfügbaren Tutorials durchzuarbeiten, um ein gewisses Grundverständnis für das, was Du tun willst, zu bekommen.

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
              2. Hallo,

                Das Problem bei mir ist, daß mir selbst die Grundkenntnisse des Programmieren fehlen.
                Ich habe auch keine Zeit irgendwelche Lehrgänge und Ähnliches zu besuchen.

                Ich behaupte mal, so eine Einstellung gibt's nur bezüglich JavaScript, und da aber reichlich. Jeder meint ohne jede Grundkenntnis ein bisschen programmieren zu können/sollen.

                JavaScript ist eine vollwertige Programmiersprache, und die Tatsache, dass man überall im Netz JavaScript-Code zum Einbinden findet, bedeuet noch lange nicht, dass man ohne Grundkenntnisse einfach loslegen sollte.

                Es würde ja auch niemand auf die Idee kommen im Getriebe seines Wagens rumpfuschen, wenn er noch nie einen Schraubenschlüssel in der Hand gehabt hat... und dann einfach im Forum fragen, wo jetzt das übrig gebliebene Rädchen und die zwei Lager vielleicht noch montiert werden könnten, damit es funktioniert...

                Gruß, Don P