
<?PHP

// Stop Words 1

// Durchsucht Eingaben nach verbotenen Worten 
// Als Zeichenkette (Fall I) und als Wort (Fall II)

// Fr Identitt(3)? (Wort: Graf Porno? Aber: Herr Fick. Lassen)
// LOG ALL Stopwords in eigener Datei - mit mail und IP

// Ausgegeben wird jeweils nur die letzte Fundstelle!


// --------------------------
// Fr Alle 
// --------------------------

// Lnge der angezeigten Fundstelle fr illegales:
$Ausgabelnge = "15";

// Gemeinsames Badstring und BWortZ1C: um nur eine bertragen zu mssen
// Unterscheidung ber Leerzeichen

// Falls  Eingabe leer:

if ($Eingabe1 == null) 
{
ECHO "\n<P>\n<FONT Size=2 COLOR=RED> <B>EINGABEFEHLER: Sie haben in der Anzeige keinen Text eingegeben. </B></FONT> <BR> <BR> \n";
$KeinText = "ja";
}

else
{
$KeinText = "nein";
}

// --------------------------
// ERSTENS:
// STOP WORD (STRING)
// Verzeichnis der verbotenen Zeichenketten: stopwords.txt
// Zu prfender String: nur Eingabe1
// --------------------------

unset($BWortZ1);

// $BadString[$b] = array readfile Stopwords -- NOCH!!
// {$SuchstringBS = "/$SuchTextEingabe/i";} 



$NGZeichenKette = "tech/stopwords.txt";
$DieNichtKette = file($NGZeichenKette);

// ACHTUNG: EIN BESTANDTEIL gengt zum Ausschlu - hier unten:
// Case insensitive
// Ohne Leerzeichen 

foreach ($DieNichtKette as $VerboteneKette) 

{

$VerboteneKetteTrimmed = trim($VerboteneKette);
$BadString = "$VerboteneKetteTrimmed";

// TEST:
// $BadString = "porno";

$BWortZ1 = stristr($Eingabe1, $BadString);



// ------------


// FALL I:
// Als Zeichenkette 

if ($BWortZ1 != false && $Eingabe1 != null) 

{

// Einschub: Wenn ZeichenKette verboten, ist Wort erlaubt? 


// --------------------------
// ZWEITENS:
// OK WORD (WORT)
// Verzeichnis der erlaubten Worte: goodwords.txt
// Zu prfender String: nur Eingabe1
// --------------------------

unset($BWortZG);

$OKZeichenKette = "tech/goodwords.txt";
$OKWort = file($OKZeichenKette);

// ACHTUNG: 
// Case insensitive
// Ohne Leerzeichen 
// 'Erlaubte Worte' hebeln die 'Verbotenen Worte' nicht aus.
// Sie bleiben als Wort verboten, nur als Zeichenkette erlaubt

foreach ($OKWort as $ErlaubtesWort) 
{
$ErlaubtesWortTrimmed = trim($ErlaubtesWort);
$GoodWord = "$ErlaubtesWortTrimmed";

// TEST:
// $GoodWord = "pornografischermll";

$BWortZG = stristr($Eingabe1, $GoodWord);

// ErlaubtesWort
}


if ($BWortZ1 != $BWortZG) 
{

$BWortZ1C = substr("$BWortZ1", 0, $Ausgabelnge); 

// TEST: 
// echo "<P>Gefundenes Ausschlu-Bestandteil: '$BadString' ";
// echo "In: '$BWortZ1C ...' <P>";

ECHO "\n<P>\n<FONT Size=2 COLOR=RED> <B>Ihre Eingabe enthlt mindestens eine unerlaubte Zeichenfolge. <BR>Die unerlaubte Zeichenfolge ist: '$BadString'. <BR>Bitte ndern oder entfernen Sie die Zeichenfolge '$BadString' in '$BWortZ1C ...' . 
</B></FONT> <BR> <BR> \n";

// in '$BWortZ1C ...' . 

$STPW = "ja";
$Invalid = $BadString; 
}

// End Einschub
}

// End VerboteneKette
}



if ($BadString != false) 
{

// $BWortZ1 = substr_count(strtolower($Eingabe1), strtolower($BadString));
// Case INsensitive! 
// $BWortZ1CI = stristr($Eingabe1, "$BadString");

// if ($BWortZ1 > 0)
// {

// Sperre Verarbeitung oder sende an invalide in SEND_VALUES

// }

}


// --------------------------
// DRITTENS:
// STOP WORD (WORT)
// Verzeichnis der verbotenen Worte: singlestopwords.txt
// Zu prfender String: nur Eingabe1
// --------------------------

unset($BWortZ1);

// $BadString[$b] = array readfile SingleStopwords-- NOCH!!
// $BadString = "Porno";
// $BadString = "/bPorno/b"; 
// {$SuchstringBW = "/\b$SuchTextEingabe\b/i";} nur bei preg_


// Case sensitive! suchstring behandeln.
// $BWortW = substr_count(strtolower($Eingabe1), strtolower($BadString));

// Case INsensitive! 
// $BWortWI = stristr($Eingabe1, "$BadString");

// Evtl. ELSE, damit nur 1 Fehlermeldung



$NGWorte = "tech/singlestopwords.txt";
$DieNichtWorte = file($NGWorte);

// ACHTUNG: EIN BESTANDTEIL gengt zum Ausschlu - hier unten:
// Case insensitive 
// Mit Leerzeichen 

foreach ($DieNichtWorte as $VerbotenesWort) 

{

$VerbotenesWortTrimmed = trim($VerbotenesWort);
// $BadString = " $VerbotenesWortTrimmed ";
$BadString = " $VerbotenesWortTrimmed ";

// TEST:
// $BadString = " porno ";

$Eingabe2 = " $Eingabe1 "; // OK
$Eingabe2 = (str_replace("\n"," ","$Eingabe2")); // OK
$Eingabe2 = (str_replace("\r"," ","$Eingabe2")); // OK
$Eingabe2 = (str_replace(">","> ","$Eingabe2")); // OK
$Eingabe2 = (str_replace("<"," <","$Eingabe2")); // OK

// TRY:

$Zerlegen = array (

"\"" => " ",
"\'" => " ",
"\\" => " ",
"!" => " ",
"" => " ",
"$" => " ",
"%" => " ",
"&" => " ",
"/" => " ",
"(" => " ",
")" => " ",
"{" => " ",
"}" => " ",
"[" => " ",
"]" => " ",
"=" => " ",
"?" => " ",
"`" => " ",
"" => " ",
"@" => " ",
"*" => " ",
"+" => " ",
"~" => " ",
"#" => " ",
"|" => " ",
";" => " ",
"," => " ",
":" => " ",
"." => " ",
"_" => " ",
"-" => " ",

);

$Eingabe2 = strtr($Eingabe2, $Zerlegen);	

$BWortZ1 = stristr($Eingabe2, $BadString);

unset($Eingabe2);


// ------------


// FALL II:
// Als Wort 


if ($BWortZ1 != false && $Eingabe1 != null) 
{
$BWortZ1C = substr("$BWortZ1", 0, $Ausgabelnge); 

// TEST: 
// echo "<P>Gefundenes Ausschlu-Bestandteil: '$BadString' ";
// echo "In: '$BWortZ1C ...' <P>";

ECHO "\n<P>\n<FONT Size=2 COLOR=RED> <B>Ihre Eingabe enthlt mindestens ein unerlaubtes Wort. <BR>Das unerlaubte Wort ist: '$BadString'. <BR>Bitte ndern oder entfernen Sie das Wort '$BadString' in '$BWortZ1C ...'. </B></FONT> <BR> <BR> \n";

// in '$BWortZ1C ...'. 

$STPW = "ja";
$Invalid = $BadString; 
}

// End VerbotenesWort
}


// --------------------------
// --------------------------
// Zusammenzhlen bei substr_count
// $BWort = ($BWortZCI + $BWortWI); 


// --------------------------
// LOG WORD
// --------------------------

$StpwLogFile = "tech/logs/invalide.log";

// evtl. ausweiten auf "$JahrInvalide.log" 
// oder "$MonatInvalide.log" - $Monat dann noch in VORGABEN_RS
// Anpassen in Admin 1

// -----------
// Vorbereiten
// -----------

$LogDatum = date("l dS of F Y h:i:s A");

// NOCH ARRAY STRING all Badwords
// Zeilenumbrche werden gelesen! 

$StpwLogString1 = "\n
$LogDatum
In DATEI: `$Woche,$EMail1,$PW1,$Modus1,$Kategorie1.txt  
Letzte illegale ZeichenKette: #$Invalid# In: $BWortZ1C 
\n";

// Ans Ende und \n!! Sonst wird der Vorgnger berschrieben



// Illegales Wort #$BadString# 
// In: $BWortWIC  

// -----------
// LOG STPW
// -----------


if($STPW == "ja")

{
// OK: Ans Ende
$fpl = fopen($StpwLogFile,"a");

// VS: An den Anfang m. r+ - NG: BERSCHREIBT immer die selben Zeilen!
// Als Zwischenlog OK

flock($fpl,2);
fputs($fpl,$StpwLogString1);
flock($fpl,3);
fclose($fpl);
}




// --------------------------
// END
// --------------------------



// END Stop Words 1

// Gibt weiter an SEND_VALUES

// --------------------------




?>

