• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Eingabe auf Wörterprüfen?

Status
Für weitere Antworten geschlossen.

Devil

Neues Mitglied
Hi zusammen,
Wie kann man mit PHP überprüfen ob ein Wort im Eintrag drin ist, was nicht hinein gehört und dann den ganzen Eintrag einfach sperrt?

Ich hab bisher nur geschaft das er Prüfen soll ob ein Name drin steht und eine
Email adresse.
Das sieht dann bisher so aus was ich habe
Code:
<?php

if (isset($_POST["senden"])) {

function daten_reiniger($inhalt) {
    if (!empty($inhalt)) {
        $inhalt = strip_tags($inhalt);
        $inhalt = htmlentities($inhalt);
        $inhalt = trim($inhalt);
        $inhalt = stripslashes($inhalt);
    }
return $inhalt;
}

foreach ($_POST as $key=>$element) {
    ${"g_".$key} = daten_reiniger($element);
}

if(strlen($g_fname)<3){
$error_msg="Bitte geben Sie Ihren Namen an";
}

if(strlen($g_finhalt)<3){
$error_msg.="<br>Bitte geben Sie auch etwas in das Gästebuch ein.";
}

if(ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$g_femail)){
$format_femail="<a href=mailto:" . $g_femail . ">E-Mail</a>";
} else {
$error_msg.="<br>Fehlerhafte E-mail!<br>";
}
if($error_msg){
echo "
<table width='300' align='center'>
  <tr>
    <td align='center' class='latestnews' colspan='3'>- FEHLER - <br>
      <p>$error_msg</p>
      <a href='javascript:history.back()' class='contentlink'>Zur&uuml;ck</a><br>
      Eintrag konnte nicht angelegt werden.<br>
      Versuchen Sie es bitte erneut!<br>
      </td>
  </tr>
</table>
";

}

} 

else {
$Rubrik=$_POST['fstatus'];
$Name=$_POST['fname'];
$Email=$_POST['femail'];
$Inhalt=$_POST['finhalt'];
$Datum=date("Y-m-d");

    @mysql_connect("localhost","","")or die(mysql_error());
    
    mysql_select_db("rzsud") or die(mysql_error());
    mysql_query("CREATE TABLE mail(
            ID INT,
            Name VARCHAR(30),
            Email VARCHAR(40),
            Rubrik VARCHAR(15),
            Inhalt TXT,
            Datum DATE NOT NULL DEFAULT '0000-00-00');");
    mysql_query("INSERT INTO mail(
            Name, Email, Rubrik, Inhalt, Datum)
            value
            ('$Name', '$Email', '$Rubrik', '$Inhalt', '$Datum');");
    
mysql_close();
 }
?>
<meta http-equiv='refresh' content="6; url=http://rzsud.rz.funpic.de/index.php?select=kontakt"/>
:
 
Werbung:
Da gäbe es 2 Methoden, die mir einfallen würden. Einma mit strchr() und einem Array, wo die bösen Wörter drin stehen (Müsstest du dann mit einer Schleife arbeiten), oder du benutzt stristr(), was ich aber eher schwachsinnig finden würde, weil das eher für den Vergleich von 2 Strings verwendet wird.
 
PHP:
$mein_text = $_POST['text'];

$keine_boesen_woerter = array("fotzzze", "blöde", "klene"); // Na merkt hier jemand was? xD

$text_zulassen = true;

foreach($keine_boesen_woerter as $check)
{
    if(stristr($mein_text, $check) !== false)
    {
        $text_zulassen = false;
        break;
    }
}

if($text_zulassen)
{
    echo "Is ok";
}
else
{
    echo "Spinnst du? sowas schreibt man nicht!!!";
}
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Zu Sn0opys Beitrag:
Du schlägst also strchr() vor und hälst stristr() für schwachsinnig?
php.net schreibt zu strchr(): "strchr — Alias von strstr()"
Und strstr() ist bekanntermaßen die case-sensitive Version von stristr() - ergo, du widersprichst dir ;)
 
Zu Sn0opys Beitrag:
Du schlägst also strchr() vor und hälst stristr() für schwachsinnig?
php.net schreibt zu strchr(): "strchr — Alias von strstr()"
Und strstr() ist bekanntermaßen die case-sensitive Version von stristr() - ergo, du widersprichst dir ;)

Ja, das war ein Fehler von mir, weil ich mit AutoIt durcheinander gekommen bin, wo es nur eine Variante gibt. Sorry ^^
 
hi das geht irgendwie nicht oder habe ich was vergessen?
Code:
<?php

if (isset($_POST["senden"])) {

function daten_reiniger($inhalt) {
    if (!empty($inhalt)) {
        $inhalt = strip_tags($inhalt);
        $inhalt = htmlentities($inhalt);
        $inhalt = trim($inhalt);
        $inhalt = stripslashes($inhalt);
    }
return $inhalt;
}

foreach ($_POST as $key=>$element) {
    ${"g_".$key} = daten_reiniger($element);
}

if(strlen($g_fname)<3){
$error_msg="Bitte geben Sie Ihren Namen an";
}

if(strlen($g_finhalt)<3){
$error_msg.="<br>Bitte geben Sie auch etwas in das Gästebuch ein.";
}



if(ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$g_femail)){
$format_femail="<a href=mailto:" . $g_femail . ">E-Mail</a>";
} else {
$error_msg.="<br>Fehlerhafte E-mail!<br>";
}
$schwarze_liste = array("Hurensohn", "hurensohn", "Lespe", "lespe",
"asrchloch","Arschloch","FICK","ficksau","spasti","spacko","faule","sau","dumfick",
"hundesohn","arsch","idiot","spako","assi");

$verbot = true;

foreach($schwarze_liste as $check)
{
    if(stristr($g_finhalt, $check) !==false)
    {
        $verbot= false;
        break;
    }
    else
    $error_msg = "Verbotenes Wort gefunden!!! <br> Oder kein Eintrag";
}

if($error_msg){
echo "
<table width='300' align='center'>
  <tr>
    <td align='center' class='latestnews' colspan='3'>- FEHLER - <br>
      <p>$error_msg</p>
      <a href='javascript:history.back()' class='contentlink'>Zur&uuml;ck</a><br>
      Eintrag konnte nicht angelegt werden.<br>
      Versuchen Sie es bitte erneut!<br>
      </td>
  </tr>
</table>
";

}

} 

else {
$Rubrik=$_POST['fstatus'];
$Name=$_POST['fname'];
$Email=$_POST['femail'];
$Inhalt=$_POST['finhalt'];
$Datum=date("Y-m-d");

    @mysql_connect("localhost","","")or die(mysql_error());
    
    mysql_select_db("rzsud") or die(mysql_error());
    mysql_query("CREATE TABLE mail(
            ID INT,
            Name VARCHAR(30),
            Email VARCHAR(40),
            Rubrik VARCHAR(15),
            Inhalt TXT,
            Datum DATE NOT NULL DEFAULT '0000-00-00');");
    mysql_query("INSERT INTO mail(
            Name, Email, Rubrik, Inhalt, Datum)
            value
            ('$Name', '$Email', '$Rubrik', '$Inhalt', '$Datum');");
    
mysql_close();
 }
?>
<meta http-equiv='refresh' content="6; url=http://rzsud.rz.funpic.de/index.php?select=kontakt"/>
 
Werbung:
Das geht viel einfacher:
PHP:
<?php
    ...

    $boehse_woerter = array("boeses wort", "noch eins", "usw.");

    if (in_array($_POST['zu_ueberpruefendes_wort'], $boese_woerter)
    {
        printf("Die Jugend heutzutage...");
    }

    ...
?>
So müsste es gehen...
 
Werbung:
also das mit dem in_array funktioniert nicht so wirklich -.-
Code:
$schwarze_liste = array ("böse", "dum"...);
if (in_array($_POST['$g_finhalt'], $schwarze_liste))
{
$error_msg .= "Beleidigungen sind Verboten!!!<br/>";
}
und das andere bekomm ich auch nicht so wirklich hin, kommt andauern ein
Syntax fehler als meldung

Code:
$schwarze_liste = array ("böse", "dum"...);

if(preg_match($schwarze_liste, $g_finhalt, $treffer, PREG_OFFSET_CAPTURE))
{
$error_msg=$treffer="Beleidigungen sind hier verboten";
}
 
PHP:
<?php
$eingabe = "Hier gibt des dieses böse Wort: Wort4";
if(preg_match('#wort4#i',$eingabe)){
    echo 'Du bist raus!'; 
}
?>
 
Zuletzt bearbeitet:
Werbung:
@Freak131: Er hat mit Sicherheit reingeguckt. Schließlich hat er von da rüberkopiert. Habe den Eintrag trozdem mal etwas geändert, sodass er entweder gegen die Performance arbeitet oder sich wirklich mit dem Regexkram auseinandersetzt ;)
 
Werbung:
das bedeutet, dass ich meine Variablen $g_finhalt garnicht pürfen kann ob dort in der Variable als eintrag ein Böses wort mitten im text steht oder wie?
 
Werbung:
glaub nicht, aber ich bekomme es nicht zum laufen
Code:
$schwarze_liste = array ("böse", "böseböse"...);
if (preg_match($schwarze_liste, $g_finhalt))
echo"Verboten!!!";
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben