Eurokicker
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 27.12.2005, 13:34   #1
TP-Moderator
 
Benutzerbild von hero-master
 
Registriert seit: Mar 2003
Ort: Hamburg
hero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKE

Wortfilter bei Textbereich


Hallo zusammen
ich bekomme in meinem Gästebuch andauernd Spameinträge, die tierisch nerven. Ungefähr dieser Art:
Zitat:
Hi! Really cool site, thanks! diazepam http://dear.to/diazepam1/ cheap diazepam diazepam diazepam online; valium http://continue.to/valium1/ cheap valium valium online buy valium;
Jetzt wollte ich iregndwie einen Wortfilter pder ähnliches einbauen, der sagt, dass wenn jemand beispielsweise "http://" in dem Textbereich eingibt, dass dieser Beitrag nicht eingetragen wird.
Nur mir fehlt irgendwie der Begriff, die Funktion dafür

Kann mir jeamnd auf die Sprünge helfen?
__________________
Grüße Nico

Meine kleinen CSS-Tutorials
hero-master ist offline   Mit Zitat antworten


Alt 27.12.2005, 14:08   #2
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
Auf der Eingabeseite würd mir da nur JS einfallen, da der Server ja noch nix bekommen hat.
IMHO besser, wenn du es vor dem Eintragen prüfst (Reguläre Ausdrücke, preg_match).
Also die an den Server geschichten Var überprüfen,wenn alles OK, eintragen, wenn nicht wieder zurückgeben und eine Fehlermeldung ausgeben, ggf.die unerlaubten Worte, URLs usw. schon rauslöschen.
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE
emCalculator 1.0

webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline   Mit Zitat antworten
Alt 27.12.2005, 14:39   #3
TP-Moderator
 
Benutzerbild von hero-master
 
Registriert seit: Mar 2003
Ort: Hamburg
hero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKE
Hallo mark,
vielen Dank für deine Hilfe

hab das jetzt mal so konstruiert:
PHP-Code:
if (preg_match ("/http/i"$_POST['Nachricht'])) {
echo 
"Sorry, aber aufgrund von Spamgefahr darfst du hier die Zeichenkette 'http' nicht verwenden";
break;
}
else
{

Mein Problem ist jetzt nur, dass, wenn ich die Konstruktion in den PHP-Teil vor der Doctypedeclaration einbaue, dass er mir dann einen xml-Fehler anzeigt, wenn ich es abschicke.
Es erscheint zwar die Ausgabe "Sorry, aufgrund...", aber wohl vor dem Doctype.
Kann man das irgendwie so steuern, dass er den Fehler im body anzeigt?
__________________
Grüße Nico

Meine kleinen CSS-Tutorials
hero-master ist offline   Mit Zitat antworten
Alt 27.12.2005, 14:56   #4
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
So?
PHP-Code:
<?
function stringcheck($foo){
    if (
preg_match("/http/i"$foo)) return "<div>Sorry, aber aufgrund von Spamgefahr darfst du hier die Zeichenkette 'http' nicht verwenden</div>";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html>
<head>
<title>Test</title> 
</head>
<body>
<?
if($test=stringcheck($_POST['Nachricht'])) echo $test;
else{
?>
    <div>Ich bin der Seiteninhalt, oder hier gibt es die weitere Verarbeitung.</div>
<?
}
?>
</body>
</html>
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE
emCalculator 1.0

webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline   Mit Zitat antworten
Alt 27.12.2005, 18:54   #5
TP-Supporter
 
Registriert seit: Dec 2005
[jacky] ist auf einem guten Weg
eventuell könnte man hier auch substr_count() in betracht ziehen
Ich finde, ein Link sollte erlaubt sein also dann einfach so machen:

PHP-Code:
$notAllow = array();
$notAllow[] = 'valium';
$notAllow[] = 'http://';
$notAllow[] = 'cheap';
$notAllow[] = 'buy';
// Maximale nicht erlaubte Wörter, um den Beitrag noch zu erlauben:
$max 3;

function 
checkWords($str)
{
   global 
$notAllow$max;

   
$summe 0;
   foreach(
$notAllow as $ss) {
       
$summe += substr_count($ss$str);
   }

   if(
$summe $max)
     return 
false;
   
   return 
true;  

und dann so einbauen:

PHP-Code:
if(!checkWords($_POST['eintrag']))
       echo 
'You are a Spammer!!!!!!!!!1111111111111'
find ich ein bischen besser
[jacky] ist offline   Mit Zitat antworten
Alt 27.12.2005, 20:49   #6
TP-Moderator
 
Benutzerbild von hero-master
 
Registriert seit: Mar 2003
Ort: Hamburg
hero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKE
Danke Mark

Hi jacky,
danke für deine Lösungsidee, ich werde mal schauen, was mir besser zusagt.

Zitat:
Zitat von [jacky]
Ich finde, ein Link sollte erlaubt sein also dann einfach so machen:
So wäre es bei mir eben am Einfachsten:
Ein Link kann ja auch ohne http angegeben werden, nru das checkt der Bot sicherlich nicht
Außerdem hat der noch andere Sprüche auf Lager, als den oben gepostet

ICh werds mal austesten, danke
__________________
Grüße Nico

Meine kleinen CSS-Tutorials
hero-master ist offline   Mit Zitat antworten
Alt 27.12.2005, 21:11   #7
TP-Moderator
 
Benutzerbild von hero-master
 
Registriert seit: Mar 2003
Ort: Hamburg
hero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKE
So jacky
Hab deinen Teil einmal bei mir eingefügt.
Jetzt kommt bei mir ejdoch eine Warnung:
http://nicogutmann.de/gaestebuch.php

Je mehr "$notAllow[] =" ich einbau, desto häufiger kommt diese Warnung
Weißt du woran das liegt?
__________________
Grüße Nico

Meine kleinen CSS-Tutorials
hero-master ist offline   Mit Zitat antworten
Alt 27.12.2005, 21:55   #8
TP-Supporter
 
Registriert seit: Dec 2005
[jacky] ist auf einem guten Weg
Ändere mal

PHP-Code:
$summe += substr_count($ss$str); 
in

PHP-Code:
$summe += substr_count($str$ss); 
Ich glaube, ich habe die Parameter vertauscht
[jacky] ist offline   Mit Zitat antworten
Alt 27.12.2005, 22:16   #9
TP-Moderator
 
Benutzerbild von hero-master
 
Registriert seit: Mar 2003
Ort: Hamburg
hero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKE
Danke
jetzt habe ich bei beiden Scripten das Problem, wo ich das Ganze hinsetze, damit es klappt
Bei beiden erscheint die gewünschte Fehlermeldungen aber der Eintrag wird trotzdem geschrieben

Ich setz mal einen Teil des Scriptes hier rein, der vor dem Doctype steht:
PHP-Code:
 if(isset($_POST['send']))
{

  if (isset(
$_SESSION['uid']) && isset($_POST['uid']) && $_SESSION['uid'] == $_POST['uid'])
  {
   unset(
$_SESSION['uid']);

    foreach(
$_POST as $key=>$value$_POST[$key]=trim(htmlspecialchars(strip_tags($value))); // Leerzeichen und HTML löschen

    
if((!empty($_POST['Name'])) && (!empty($_POST['Nachricht'])))
    {
        if(
check_email($_POST['Email']))
        {
            
$emaildb=$_POST['Email'];
        }
        else
        {
            
$emaildb="";
        }

        if(
checkurl($_POST["Webseite"]))
        {
            
$webseitedb=$_POST["Webseite"];
            if(!
eregi("http://"$webseitedb)) $webseitedb="http://".$webseitedb;
        }
        else
        {
            
$webseitedb="";
        }

        
$ipdb=$_SERVER['REMOTE_ADDR'];
        
$browserdb=$_SERVER['HTTP_USER_AGENT'];
        
$namedb=$_POST['Name'];
        
$eintragdb=$_POST['Nachricht'];

        
$speichern="
                    INSERT INTO
                        gaestebuch
                            (id, name, email, webseite, eintrag, ip, browser, datum)
                    VALUES
                            ('', '$namedb', '$emaildb', '$webseitedb', '$eintragdb', '$ipdb', '$browserdb', CURDATE())"
;
        
mysql_query($speichern) or die(mysql_error());
    }
  }
  else
   {
     echo 
"Spamversuch, bitte später erneut versuchen";
     break;
   }

__________________
Grüße Nico

Meine kleinen CSS-Tutorials
hero-master ist offline   Mit Zitat antworten
Alt 28.12.2005, 01:16   #10
321
TP-Specialist
 
Benutzerbild von 321
 
Registriert seit: Nov 2004
Ort: Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
321 hilft, wo's geht321 hilft, wo's geht321 hilft, wo's geht
Du erwartest und hast doch deutschsprachige Besucher.
Da könntest Du nach Jackys Methode einfach mal engl. Ausdrücke mit Please use the German language! abweisen.
Cool usw. könnte ja erlaubt bleiben.
Wetten der ist schnell weg!?
__________________
[321 Name="Joe"]
wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
[/321]


use my HTML-Tester

Motto'06: Mut zur deutschen Sprache!
321 ist offline   Mit Zitat antworten
Alt 28.12.2005, 07:04   #11
TP-Supporter
 
Registriert seit: Dec 2005
[jacky] ist auf einem guten Weg
Hi, also ich würde es schätzungsweise (wenn ich deinen Code nun richtig verstehe) so einbauen:

PHP-Code:
if(isset($_POST['send']))
{

  if (isset(
$_SESSION['uid']) && isset($_POST['uid']) && $_SESSION['uid'] == $_POST['uid'])
  {
   unset(
$_SESSION['uid']);

    foreach(
$_POST as $key=>$value$_POST[$key]=trim(htmlspecialchars(strip_tags($value))); // Leerzeichen und HTML löschen

    
if((!empty($_POST['Name'])) && (!empty($_POST['Nachricht'])))
    {
        if(
check_email($_POST['Email']))
        {
            
$emaildb=$_POST['Email'];
        }
        else
        {
            
$emaildb="";
        }

        if(
checkurl($_POST["Webseite"]))
        {
            
$webseitedb=$_POST["Webseite"];
            if(!
eregi("http://"$webseitedb)) $webseitedb="http://".$webseitedb;
        }
        else
        {
            
$webseitedb="";
        }

        if(!
checkWords($_POST['Nachricht'])) {
            
$f true;
            echo 
'SPAM VERSUCHE SIND NICHT ZULÄSSIG!';            
        }    
            
        if(!
$f) {    
            
$ipdb=$_SERVER['REMOTE_ADDR'];
            
$browserdb=$_SERVER['HTTP_USER_AGENT'];
            
$namedb=$_POST['Name'];
            
$eintragdb=$_POST['Nachricht'];
    
            
$speichern="
                        INSERT INTO
                            gaestebuch
                                (id, name, email, webseite, eintrag, ip, browser, datum)
                        VALUES
                                ('', '$namedb', '$emaildb', '$webseitedb', '$eintragdb', '$ipdb', '$browserdb', CURDATE())"
;
            
mysql_query($speichern) or die(mysql_error());
        }    
    }
    else {
        echo 
'Bitte geben Sie einen Namen ein!';
    }
  }
  else
   {
     echo 
"Spamversuch, bitte später erneut versuchen";
     break;
   }

welche 2 Zeilen ich nicht so recht verstehe:

break; am Ende in der else-Anweisung ... was bringt das? Befindet sich diser Code in ner Schleife!? Meintest du eventuell exit oder die() ?

Was soll diese Zeile hier:
PHP-Code:
trim(htmlspecialchars(strip_tags($value))); 
Also ich mein, htmlspecialchar() ist doch schon grob genug, da koimmt nix mehr durch, weil alles durch die entities ersetzt wird
Alos ich würde strip_tags() rausnehmen, dadurch wird doch nur der beitrag verfälscht
[jacky] ist offline   Mit Zitat antworten
Alt 28.12.2005, 09:36   #12
TP-Moderator
 
Benutzerbild von hero-master
 
Registriert seit: Mar 2003
Ort: Hamburg
hero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKEhero-master ist ein richtiges Arbeitstier - DANKE
Hallo Jacky
Der Code ist nicht von mir, sondern von "Boris", den er mir geliehen hat (danke dafür )
Du hast bei deinem Beispiel nur die if-Anweisung, die dann den Hinweis wegen den Wörtern bringt, aber ich versuche den Teil mit "notAllow" einzubauen. DIe if-Anweisung habe ich in den body eingebaut.
Könntest du nochmal nachsehen? Danke


@321:
Was in dem Hinweis steht ist doch eher zweitrangig für einen Bot, meinst du nicht?
__________________
Grüße Nico

Meine kleinen CSS-Tutorials

Geändert von hero-master (28.12.2005 um 09:48 Uhr).
hero-master ist offline   Mit Zitat antworten
Alt 28.12.2005, 10:35   #13
TP-Supporter
 
Registriert seit: Dec 2005
[jacky] ist auf einem guten Weg
Klar könnte ich
Ich müsste nur verstehen, was du genau habe möchtest

Also nochmal genaz genau bitte, weil ich nicht richtig verstehe, wo das Problem liegt

Bzw poste nochmal deinen kompletten COde
[jacky] ist offline   Mit Zitat antworten
Alt 28.12.2005, 11:03   #14