Autor |
Nachricht |
kramsen
Threadersteller
Dabei seit: 06.12.2008
Ort: im Anschnitt
Alter: -
Geschlecht:
|
Verfasst Di 22.06.2010 19:20
Titel fwrite bad word error? |
|
|
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
|
|
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Di 22.06.2010 19:26
Titel
|
|
|
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
|
|
|
|
|
Anzeige
|
|
|
kramsen
Threadersteller
Dabei seit: 06.12.2008
Ort: im Anschnitt
Alter: -
Geschlecht:
|
Verfasst Di 22.06.2010 20:42
Titel
|
|
|
Bin wohl doch noch nicht so ein Php-Könner.
Erste Version funzt einwandfrei, dankeschön M.
Jedoch wäre es nich gut zu Wissen wie ich das nicht ersetzen, sondern garnicht erst "writen" lasse?
|
|
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Di 22.06.2010 21:09
Titel
|
|
|
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?
|
|
|
|
|
kramsen
Threadersteller
Dabei seit: 06.12.2008
Ort: im Anschnitt
Alter: -
Geschlecht:
|
Verfasst Di 22.06.2010 21:37
Titel
|
|
|
Genau,
dürfte vom Coding ja garnicht mal so schwer sein. -.-
|
|
|
|
|
ms_progy
Dabei seit: 22.06.2010
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mi 23.06.2010 15:21
Titel
|
|
|
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.
|
|
|
|
|
m
Moderator
Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mi 23.06.2010 15:31
Titel
|
|
|
ms_progy hat geschrieben: | Den Array mit den Badwords könnte man entsprechend mit foreach durchwandern. |
Oder einfach strstr nutzen
|
|
|
|
|
ms_progy
Dabei seit: 22.06.2010
Ort: -
Alter: -
Geschlecht:
|
Verfasst Mi 23.06.2010 15:36
Titel
|
|
|
Allerdings ist strstr case-sensitive - da halte ich dann stristr für sinnvoller
|
|
|
|
|
|
|
|
Ä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...
|
|