mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Mi 24.04.2024 23:07 Benutzername: Passwort: Auto-Login

Thema: fwrite bad word error? vom 22.06.2010


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> fwrite bad word error?
Autor Nachricht
kramsen
Threadersteller

Dabei seit: 06.12.2008
Ort: im Anschnitt
Alter: -
Geschlecht: Männlich
Verfasst Di 22.06.2010 19:20
Titel

fwrite bad word error?

Antworten mit Zitat Zum Seitenanfang

Ich werkel gerade etwas mit php-HTML-Formularen und im Zuge Dessen möchte ich die Eingabe eines bestimmten Wortes mit einem Error versehen. Man findet massig über Bad-Word Filter, die funktionieren auch, aber da ich per fwrite in eine externe .txt schreibe und diese per echo ausgebe, ist das Badword nach dem aktualisieren wieder unzensiert. Wer kann mir helfen?

Hier mein QT:

Code:
<?php

$chatfile  = file_get_contents("chat.txt");
$text       = '';
$minlength = 1;
$maxlength = 500;

if (isset($_POST['text']) && strlen($_POST['text']) >= $minlength) {
   $text = substr(stripcslashes(htmlentities($_POST["text"])),0,$maxlength) . "\n";
   $output = $text.$chatfile;
   file_put_contents("chat.txt", $output);
}

?><center>
<form action="<?=$_SERVER['SCRIPT_NAME']?>" method="post">
 <p><input type="text" name="text" class="text01" maxlength="50" value="etwas sagen..." onclick="this.value=' '"> </p>
 <div id="navigation">
        <table>
           <tr>
            <td>
                  <p> <input type="submit" class="button" value="Senden"> </p>
            </td>
            <td>
                  <p> <input type="reset" class="button2" value="Löschen"> </p>
            </td>
          </tr>
       </table>
</div>
</form></center>
<div id="text02">
<?
if ($text) {
      echo '<div style="background-color:#C4C4C4;">';
      echo $text;
      echo '</div>';
   }
   $chatlines = explode("\n",$chatfile);
   $evenodd = 0;
   foreach($chatlines as $line) {
      if(strlen($line) == 0) continue;
      $evenodd++;
      $color = ($evenodd % 2) ? '#D4D4D4' : '#C4C4C4';
      echo '<div style="background-color:'.$color.'">';
      echo $line;
      echo '</div>';
   }
?>


Zuletzt bearbeitet von kramsen am Di 22.06.2010 19:21, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Di 22.06.2010 19:26
Titel

Antworten mit Zitat Zum Seitenanfang

Heißt du möchtest das Badword ersetzen?

Einfachste Möglichkeit wäre in etwa so:

Code:
if (isset($_POST['text']) && strlen($_POST['text']) >= $minlength) {
   $str = str_replace(array('badword1', 'badword2'), '******', $_POST["text"]);
   $text = substr(stripcslashes(htmlentities($str)),0,$maxlength) . "\n";
   $output = $text.$chatfile;
   file_put_contents("chat.txt", $output);
}


Oder erst vor der Ausgabe:

Code:
   foreach($chatlines as $line) {
      if(strlen($line) == 0) continue;
      $evenodd++;
      $color = ($evenodd % 2) ? '#D4D4D4' : '#C4C4C4';
      echo '<div style="background-color:'.$color.'">';
      echo str_replace(array('badword1', 'badword2'), '******', $line);
      echo '</div>';
   }


Zuletzt bearbeitet von m am Di 22.06.2010 19:29, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
kramsen
Threadersteller

Dabei seit: 06.12.2008
Ort: im Anschnitt
Alter: -
Geschlecht: Männlich
Verfasst Di 22.06.2010 20:42
Titel

Antworten mit Zitat Zum Seitenanfang

Bin wohl doch noch nicht so ein Php-Könner. * Applaus, Applaus *
Erste Version funzt einwandfrei, dankeschön M. Lächel

Jedoch wäre es nich gut zu Wissen wie ich das nicht ersetzen, sondern garnicht erst "writen" lasse?
  View user's profile Private Nachricht senden
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Di 22.06.2010 21:09
Titel

Antworten mit Zitat Zum Seitenanfang

kramsen hat geschrieben:
Jedoch wäre es nich gut zu Wissen wie ich das nicht ersetzen, sondern garnicht erst "writen" lasse?


Du meinst den ganzen Beitrag nicht in die Textdatei zu schreiben falls er ein badword enthält?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
kramsen
Threadersteller

Dabei seit: 06.12.2008
Ort: im Anschnitt
Alter: -
Geschlecht: Männlich
Verfasst Di 22.06.2010 21:37
Titel

Antworten mit Zitat Zum Seitenanfang

Genau,
dürfte vom Coding ja garnicht mal so schwer sein. -.-
  View user's profile Private Nachricht senden
ms_progy

Dabei seit: 22.06.2010
Ort: -
Alter: -
Geschlecht: Weiblich
Verfasst Mi 23.06.2010 15:21
Titel

Antworten mit Zitat Zum Seitenanfang

per stripos prüfen, ob ein badword enthalten ist. Wenn ja, einfach nicht schreiben lassen.

Den Array mit den Badwords könnte man entsprechend mit foreach durchwandern.
  View user's profile Private Nachricht senden
m
Moderator

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Mi 23.06.2010 15:31
Titel

Antworten mit Zitat Zum Seitenanfang

ms_progy hat geschrieben:
Den Array mit den Badwords könnte man entsprechend mit foreach durchwandern.


Oder einfach strstr nutzen *zwinker*
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
ms_progy

Dabei seit: 22.06.2010
Ort: -
Alter: -
Geschlecht: Weiblich
Verfasst Mi 23.06.2010 15:36
Titel

Antworten mit Zitat Zum Seitenanfang

Allerdings ist strstr case-sensitive - da halte ich dann stristr für sinnvoller *zwinker*
  View user's profile Private Nachricht senden
 
Ähnliche Themen Parse error: syntax error, unexpected '<' in /homepages/23/
Parse error: syntax error, unexpected '>' [solved]
[PHP] fwrite in eine CSV
fwrite() und das $ problem
Parse error: syntax error, unexpected '{'
Parse error: parse error, unexpected...
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.