Mark: Filter aus externer Datei beziehen

Hallo Leute,

Ich arbeite gerade an einem Gästebuch für meine HP und will dort einen Filter einbauen und zwar nicht nur beim Gästebuch sondern auch beim Forum beim Webmailer usw.
Damit ich jetzt nicht jedesmal die Schimpfwörter, die ich dem Filter hinzufügen will in jede Datei extra hineinschreiben muss, wollte ich das ganze mit einer include()-Funktion o.ä. machen, also dass ich die ganzen Filter-Wörter in eine extra Datei schreibe. Wenn ich jetzt aber im GB das mit dem Befehl <? include("filter.txt") ?> versuche, gibt er den Inhalt der Datei filter.txt aus. Ich will aber, dass er den Inhalt nur einliest ohne ihn auszugeben. Wie mach' ich das?

  1. Hi,

    die Wörter in ein Array packen vielleicht?
    Du musst sie ja eh abgleichen.

    Grüsse, Anon

  2. hi,

    Wenn ich jetzt aber im GB das mit dem Befehl <? include("filter.txt") ?> versuche, gibt er den Inhalt der Datei filter.txt aus. Ich will aber, dass er den Inhalt nur einliest ohne ihn auszugeben.

    dann packe gültigen PHP-code in eine include-datei, inklusive <?php und ?>

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. Hi,

    (zu wahsaga:)Des is mir zu umständlich
    (zu Anton:)Ich hab' die Wörter bereits in einem Array
    Ich will es ungefähr so haben:

    $filter_txt=??????;

    $filter_founded=0;
    $filter=array($filter_txt);   //bzw. $filter=$filter_txt;
    for ($n=0; $n<count($filter); $n++) { if (eregi($filter[$n], $text)) $filter_founded=1; }

    if ($filter_founded==1)
    { usw usw

    Ich hab's auch schon mit $filter_txt=file("filter.txt"); versucht, funktioniert aber nicht!?

    1. Hi,

      dann nenn die Datei auf jeden fall nicht .txt
      sondern filter.inc.php - ist ja dann so wie
      wahsaga schon sagte php code, der aber in einer
      .txt Datei nichts verloren hat.

      Grüße, Anon ohne t :-)

      1. Hi,

        noch was,

        ob dein Code dann in gewünschter Art und Weise
        funktioniert hab ich nicht nachgesehen.
        Sieht aber mM. nicht danach aus.

        Grüße, Anon

        1. Also nochmal,

          Als ich vorhin sagte, dass ich die Wörter schon in einem Array habe, hab' ich mein jetziges Skript gemeint. Und jetzt will ich das eben in diese andere Version umändern. Es muss doch irgendeinen Befehl geben, der einen String in einen PHP-Code inkludiert, oder?!

    2. hi,

      Ich hab' die Wörter bereits in einem Array

      wo bitte ist denn dann noch das problem?

      irgendwie habe ich zweifel, ob das, was du uns hier weis machen willst, irgendeinen bezug zu den realen gegebenheiten hat?

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
    3. Lieber Mark,

      Ich hab's auch schon mit $filter_txt=file("filter.txt"); versucht, funktioniert aber nicht!?

      So hätte ich es von vornherein gemacht (und tue das auch mit meinem GB). Wenn es "nicht funzt", dann stimmt der Pfad nicht! Korrigiere ihn auf absolut, dann sollte Dein Array $filter_txt gefüllt sein mit vielen schönen bösen Ausdrücken! ;-)

      $filter = file("pfad/zur/datei/"."filter.txt");

      Liebe Grüße aus Ellwangen,

      Felix Riesterer.

      1. Ich hab's jetzt mal folgendermaßen versucht:

        $filter_dat=file("./filter.txt");  
        //================================================================================================================================================ //::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::  
          
        $textohneleer = str_replace(array(" ",","), "", $text);   //Leerzeichen und Kommas usw werden aus Text entfernt  
          
        $filter_founded=0;  
        $filter=array($filter_dat);  
        for ($n=0; $n<count($filter); $n++) { if (eregi($filter[$n], $textohneleer)) $filter_founded=1; }  
        
        

        (Pfad stimmt) funktioniert aber trotzdem nicht. Ich glaube es liegt an dem array($filter_dat);. Ich könnte ja den ganzen Befehl $filter=array($filter_dat); in die datei filter.txt schreiben, wenns aber anders ginge, wär's mir sehr recht

        Danke im Vorraus

        Mark

        1. Lieber Mark,

          $filter=array($filter_dat);

          Was'n DAS^^^???

          Das, was die Funktion file() zurückliefert _ist bereits_ ein Array! Nach jedem Zeilenumbruch wird gesplittet, so dass Deine Array-Einträge durch Zeilenumbrüche getrennt aufgenommen werden. Deshalb kannst Du Dir die zitierte Zeile komplett ersparen! Wenn Dein Pfad nicht absolut definiert ist (unter Windows wäre "c:\Programme\Mist\Dreck.exe" ein absoluter, "Unterverz/test.html" ein relativer Pfad), dann kann PHP Deine Datei nicht finden!

          Liebe Grüße aus Ellwangen,

          Felix Riesterer.

    4. Hi!

      Mal vorab ein kleiner Hinweis: http://dict.leo.org/?search=founded

      (zu wahsaga:)Des is mir zu umständlich
      (zu Anton:)Ich hab' die Wörter bereits in einem Array

      Willst Du die Wörter jetzt in einem PHP-Array speichern, oder nur eine plain-text Liste?

      Ich will es ungefähr so haben:

      $filter_txt=??????;

      $filter_founded=0;
      $filter=array($filter_txt);   //bzw. $filter=$filter_txt;
      for ($n=0; $n<count($filter); $n++) { if (eregi($filter[$n], $text)) $filter_founded=1; }

      blicke nicht durch was Du da genau vorhast ;-)

      Ich würde es etwa so probieren:

      <?php  
      function blacklist_match($msg) {  
          foreach (file('filter.txt') as $badword) {  
              if (strpos($msg, rtrim($badword)) !== FALSE) return TRUE;  
          }  
          return FALSE;  
      }  
      if (blacklist_match($_POST['message'])) {  
          // Wort auf blacklist in Nachricht gefunden  
      }  
      ?>
      

      'filter.txt' müsste entsprechend so aussehen:

      wort1  
      wort2  
      wort3  
      ...
      

      Allerdings ist das nicht sonderlich effizient.

      Grüße
      Andreas

      --
      SELFHTML Linkverzeichnis: http://aktuell.de.selfhtml.org/links/