Gästebuchspam ausschalten

bifur81

Mitglied
Hallo zusammen,

habe ein kleines Problem mit meinem kleinen Gästebuch. Soll auch sehr einfach bleiben, aber leider habe ich seit einiger Zeit ständig Spam drin und muss von Hand dies bereinigen. Jetzt meine Frage, kann ich diesen Spam irgendwie unterbinden

Mein Gästebuchcode:
PHP:
<?php
$filename = 'guestbook.txt'; // Datei, in die die Beiträge geschrieben werden soll

if( !empty( $_POST['sign'] ) && !empty( $_POST['name'] ) )
{
    $fh = @fopen( $filename, 'a+' ) or die ("Kann Datei: $filename nicht öffnen");
    fwrite( $fh, date( "d.m.Y H:i:s" ). "\n".
                htmlspecialchars( $_POST['name'] ). "\n".
                htmlspecialchars( $_POST['email'] ). "\n".
                str_replace( "\n", "<br />", htmlspecialchars( $_POST['comments'] ) ). "\n" );
    fclose( $fh );
}

require( 'gaeste.php' ); // Formular ausgeben

$fh = @fopen( $filename, 'r' );
if( $fh )
{
    $content = array_reverse( file( $filename ) );
    for( $i = 0; $i < count( $content ) - 3; $i += 4 )
    {
        $date     = $content[$i+3];
        $name     = $content[$i+2];
        $email    = $content[$i+1];
        $comments = $content[$i];

        require( 'ausgabe.php' ); // Einzelne Einträge ausgeben
    }
    fclose( $fh );
}
?>

Und das ist zum Beispiel ein solcher Eintrag, den ich seit neuestem immer habe! Leider.

pH8uoz <a href=\"http://ncrfrcmzdplo.com/\">ncrfrcmzdplo</a>, skbvltolgyvh, [link=http://yogjqtlcdsqe.com/]yogjqtlcdsqe[/link], http://hticjtmktcwf.com/

Kann mir jemand bei diesem vielleicht kleinen Problem helfen?

THX im voraus.
 
genau, captcha ist ein sehr guter weg. du könntest auch zeitsperren einbauen, so, dass der besucher nur einen eintrag in 5min machen kann. nur als beispiel...
 
Tja tatsache ist aber, das immer mehr Spamseiten nicht nur mit Bots sondern auch manuel werkeln wegen der steigenden Beliebtheit von Captcha's zur abhaltung von Bots.

Am besten ist immer noch alles manuel zu überwachen.
 
also was ist das für eine spamer der manuel die captchas eingibt und die eingabefrist einhält. der würde ja am tag allerhöchstens 5 seiten schaffen.

ich hatte bisher nur mit bots zu tun. wenn jmd manuel die sachen eingibt, dann gibt es kein schutz dafür. aber es ist eher unwahrscheinlich, bzw kommt seltener vor.
 
Wieso so kompliziert?

Für ein Gästebuch reicht es vollkommen aus, wenn man ein weiteres Feld in das Formular packt, z. B. "telephon" oder weiss der Geier was. Es sollte nur nicht gerade "spam" heissen...

Dieses Feld blendet man aus - wichtig ist dabei das man es per CSS ausblendet, nicht mit type="hidden"!

Nun braucht man lediglich noch überprüfen, ob dieses Feld ausgefüllt wurde.
Wenn ja ist es Spam, wenn nein ist es mit sehr hoher Wahrscheinlichkeit ein Gästebucheintrag.

Mit dieser Methode fahre ich seit langem sehr gut, ohne mich mit - m. E. extrem nervigen - Captchas rumärgern zu müssen.

Das dieser Weg nicht immer SInn macht ist mir allerdings auch bewusst. ;)
 
Bei mir hat sich eine Kombination aus folgendem bewährt:

Wortsperre - z. B. für Casino, Poker
Code-Verbot - Sobald html-code verwendet wird kommt der Eintrag nicht zustande
Captcha

Seit dem Spam = 0 ;-)
 
Danke für eure Antworten,

habe jetzt das Gästebuch mit einer Captcha-Eingabe versehen, aber leider muss ich irgendwo einen Fehler haben, denn ich kann trotz nichteingabe in das Captchafeld einen Eintrag vornehmen! Stehe irgendwie auf dem Schlauch :confused:
PHP:
<?php
session_start();
function encrypt($string, $key) {
$result = '';
for($i=0; $i<strlen($string); $i++) {
   $char = substr($string, $i, 1);
   $keychar = substr($key, ($i % strlen($key))-1, 1);
   $char = chr(ord($char)+ord($keychar));
   $result.=$char;
}
return base64_encode($result);
}
$sicherheits_eingabe = encrypt($_POST["key"], "6845486");
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
if(isset($_SESSION['spam']) AND $sicherheits_eingabe == $_SESSION['spam']){
unset($_SESSION['spam']);
}

$filename = 'guestbook.txt'; // Datei, in die die Beiträge geschrieben werden soll

if( !empty( $_POST['sign'] ) && !empty( $_POST['name'] ) )
{
    $fh = @fopen( $filename, 'a+' ) or die ("Kann Datei: $filename nicht öffnen");
    fwrite( $fh, date( "d.m.Y H:i:s" ). "\n".
                htmlspecialchars( $_POST['name'] ). "\n".
                htmlspecialchars( $_POST['email'] ). "\n".
                str_replace( "\n", "<br />", htmlspecialchars( $_POST['comments'] ) ). "\n" );
    fclose( $fh );
}

require( 'gaeste.php' ); // Formular ausgeben

$fh = @fopen( $filename, 'r' );
if( $fh )
{
    $content = array_reverse( file( $filename ) );
    for( $i = 0; $i < count( $content ) - 3; $i += 4 )
    {
        $date     = $content[$i+3];
        $name     = $content[$i+2];
        $email    = $content[$i+1];
        $comments = $content[$i];

        require( 'ausgabe.php' ); // Einzelne Einträge ausgeben
    }
    fclose( $fh );
}
?>

THX im voraus
 
PHP:
// Datei, in die die Beiträge geschrieben werden soll
if( !empty( $_POST['sign'] ) && !empty( $_POST['name'] ) && !isset( $_SESSION['spam'] ) )
 
Zurück