In letzter Zeit hatte ich, wie schonmal schonmal berichtet, vermehrt Trackbackspam. Für das Problem mit dem Kommentarspam habe ich eine gute Lösung gefunden. Seit der Einführung der Matheaufgabe, hatte ich keinen Spamkommentar mehr. Bei den Trackbacks ist das ja nicht so einfach, aber es gibt trotzdem eine recht zuverlässige Lösung.
Wenn ich von einer Seite einen Trackback erhalte, dann sollte auf dieser Seite auch ein Link auf meine Seite sein, oder sie sollte zumindest erwähnt werden. Und genau das überprüft diese Funktion.
Nun habe ich eine kleine PHP Funktiongeschrieben, welche überprüft ob auf der fremden Seite meine URL Vorkommt. So reicht eine Überprüfung des Strings t-error.ch schon. Ich muss nicht mal überprüfen, ob es ein Link ist, denn die Trackbackspammer erwähnen auf ihren Seiten meine Seite ja kaum. Die Funktion überprüft die Seite in der Variable $url und gibt die Variable $spam zurück. Relativ simpel und effektiv. Bisher wurde noch kein Trackbackspam durchgelassen.
Wenn ich von einer Seite einen Trackback erhalte, dann sollte auf dieser Seite auch ein Link auf meine Seite sein, oder sie sollte zumindest erwähnt werden. Und genau das überprüft diese Funktion.
Nun habe ich eine kleine PHP Funktiongeschrieben, welche überprüft ob auf der fremden Seite meine URL Vorkommt. So reicht eine Überprüfung des Strings t-error.ch schon. Ich muss nicht mal überprüfen, ob es ein Link ist, denn die Trackbackspammer erwähnen auf ihren Seiten meine Seite ja kaum. Die Funktion überprüft die Seite in der Variable $url und gibt die Variable $spam zurück. Relativ simpel und effektiv. Bisher wurde noch kein Trackbackspam durchgelassen.
<?
function trackbackSpamCheck($url)
{
// Spamvariable
$spam=1;
// die url aufsplitten
$parsed=parse_url(trim(addSlashes($url)));
// einen pfad angeben wenn noetig
if(!isSet($parsed['path']))
{
$parsed['path']="/";
}
// den querystring anfuegen wenn noetig
$path=$parsed['path'];
if(isSet($parsed['query']))
{
$path.="?".$parsed['query'];
}
// zum host verbinden
$fp=fSockOpen($parsed['host'],80,$errno,$errstr,30);
if($fp)
{
// GET request senden
fPuts($fp,"GET ".$path." HTTP/1.0\r\n");
fPuts($fp,"Host: ".$parsed['host']."\r\n\r\n");
// Den Quelltext auslesen
while(!fEof($fp))
{
// auf t-error.ch pruefen
if(eregi("t-error.ch",fgets($fp,1024)))
{
// wenn vorhanden $spam auf 0 setzen und abbrechen
$spam=0;
break;
}
}
// verbindung trennen
fclose($fp);
}
return $spam
}
?>