Datei auslesen wegen badwordfilter

MrUnknow

Grünschnabel
Guten Tag,
langsam bin ich am verzweifeln,
ich schreibe eine Funktion wo aus einer Textdatei Wörter ausgelesen werden, die nicht verwendet werden dürfen, doch er prüft nur den letzten Inhalt, warum
Habe es mit for() und foreach() probiert!
Quelltext:
Code:
<?
$datei = file("bad.txt");
foreach ($datei as $verboten)
{
if(eregi($verboten,$_POST['nick']))
{
$bad = "jaa";
$_POST['nick'] = "Verboten";
}
else
$bad = "nein";
echo "Wert: $verboten<br>\n";
}
echo $bad;
echo "<br>";
echo $_POST['nick'];
?>
<form name="form1" method="post" action="filter2.php">
  <p>
    <input name="nick" type="text" id="nick">
</p>
  <p>
    <input type="submit" name="Submit" value="Submit">
</p>
</form>
oder
Code:
<?
$datei = file("bad.txt");
$anzahl = count($datei);
$i = $anzahl;
do
{
if($datei[$i] == $_POST['nick'])
{
$bad = false;
$_POST['nick'] = "Dieser Nick ist Verboten";
}
$i--;
}while($i != 0);
echo $bad;
echo "<br>";
echo $_POST['nick'];
?>
<form name="form1" method="post" action="filter3.php">
  <p>
    <input name="nick" type="text" id="nick">
</p>
  <p>
    <input type="submit" name="Submit" value="Submit">
</p>
</form>

Die for() Version hab ich leider nicht mehr, aber ich denke ihr könnt euch schon vorstellen, wie die aussieht! *g*

Um baldige und hilfreiche Antworten danke ich jedem der hier was Posted!
Danke
MfG
 
PHP:
<?
$datei = file("bad.txt");
if(in_array($_POST['nick'], $datei))
{
$bad = "jaa";
$_POST['nick'] = "Verboten";
}
else
$bad = "nein";
echo "Wert: $verboten<br>\n";
}
echo $bad;
echo "<br>";
echo $_POST['nick'];
?>
 
das kann nicht funktionieren da bei jedem Schleifendurchlauf $bad neu gesetzt wird. $_POST['nick'] sollte aber trotzdem auf verboten gesetzt werden. Versuch es mal damit:
PHP:
$bad = "nein";
foreach ($datei as $verboten) {
	if(eregi($verboten,$_POST['nick'])) 	{
		$bad = "jaa";
		$_POST['nick'] = "Verboten";
	}
	echo "Wert: $verboten<br>\n";
}
 
Ok, habe beides ausprobiert!
@ German & BobDerMeister
Danke für die schnellen Antworten, aber
ich habe immer noch das selbe Problem, das er alles als erlaubt angibt, bis auf das was als letztes in der Datei bad.txt steht.

bad.txt
Code:
abc
def
blub

Und nur wenn ich "blubb" in das Feld eingebe, dann steht da Verboten!
Bei "abc" oder "def" nicht!


PHP:
<?
$datei = file("bad.txt");
$bad = false;
foreach ($datei as $verboten) 
{
if(eregi($verboten,$_POST['nick']))
{
$bad = true;
$_POST['nick'] = "Verboten";
}
} 
# dient zur Testausgabe
echo $bad;
echo "<br>";
echo $_POST['nick'];
?>

oder

PHP:
<?
$datei = file("bad.txt");
if(in_array($_POST['nick'], $datei))
{
$bad = true;
$_POST['nick'] = "Verboten";
}
else
{
$bad = false;
}
# dient zur Testausgabe
echo $bad;
echo "<br>";
echo $_POST['nick'];
?>

MfG
 
Zuletzt bearbeitet:
das liegt dann wohl am Zeilenumbruch am Ende einer jeden Zeile (\n)

mit trim wird der Umbruch abgeschnitten (trim)
PHP:
foreach ($datei as $verboten) {
	if (eregi( trim($verboten) , $_POST['nick'])) 	{
		$bad = "jaa";
		$_POST['nick'] = "Verboten";
	} else {
		$bad = "nein";
	}
	echo "Wert: $verboten<br>\n";
}
 
Juchu endlcih klappt es!
Vielen Dank, an alle die Versucht haben mir zu helfen!
Auch die die nur gelesen haben und sich Gedanken darüber gemacht haben! :)
Wenn es nochmalige Probleme gibt melde ich mich ^^
cYa
 
So, ich hab das Thema nochmal als nicht erledigt gekennzeichnet, da ich nun ein Fehlermeldung bzw. eine Warnung bekomme.
Ich kann damit leider nicht viel anfangen!
Vielleicht könnt ihr mir nochmla helfen! :)

PHP:
Warning: eregi() [function.eregi]: REG_EMPTY in /www/htdocs/v113928/reg.php on line 19

Danke im Vorraus
 
Zurück