Sblam!

Blokuje blogowy spam

Instalacja — PHP

Proszę przeczytaj tę instrukcję uważnie i w całości. Bardzo wiele osób przegapia ważne uwagi w niej zawarte i nie­po­trzebnie dodaje sobie pracy albo obniża jakość filtrowania.

To jest ogólna instrukcja, wymagająca znajomości języka PHP. Jeśli instalujesz wtyczkę na forum phpBB, zobacz opis specjalnie dla phpBB.

1. Zmodyfikowanie PHP

Dodanie filtrowania wymaga dodania kodu do skryptu PHP, który odbiera dane z formu­larza (zazwyczaj to plik wskazy­wany przez <form action="…">).

W skrypcie tym musisz dodać kod tak, aby był wykonany po sprawdzeniu poprawności danych (żeby niewypełniony formularz nie był niepotrzebnie sprawdzany pod kątem spamu), ale przed zapisaniem postu do bazy.

Kod do dodania:

include_once "sblamtest.php";
$rezultat = sblamtestpost();

if ($rezultat > 0) {
    die('<h1>Przepraszamy - twój komentarz został uznany za spam!</h1>
    <p><a href="'.sblamreporturl().'">Zgłoś błąd filtru</a>.</p>');
}

Powyższy kod, jeśli potrafisz, możesz dowolnie modyfikować i rozszerzać (w szczególności warto w nim ulepszyć reakcję na spam).

Funkcja sblamtestpost() zwraca liczbę oznaczającą jak bardzo spamowaty jest post:

  • 2 oznacza pewny spam, który możesz spokojnie odrzucić.
  • 1 oznacza prawdopodobny spam (ale dla pewności możesz go dodać do moderacji).
  • -1 to prawdopodobny czysty post (ale — j.w.)
  • -2 post jest czysty jak łza, możesz go śmiało zachować.
  • 0 oznacza błąd. Post nie został sprawdzony.

Funkcja sblamreporturl() zwraca adres (URL), pod którym użytkownik może zgłośić błędnie zaklasyfikowany post.

Nie próbuj wysyłać testowych spamów! Nie uda ci się w ten sposób sprawdzić, czy działa filtrowanie! Koniecznie przeczytaj testowanie na końcu tej strony zanim zaczniesz bezskutecznie zalewać serwis postami typu „via­gra, via­gra, via­gra”!

2. Dodanie JavaScript

Drugim krokiem jest umieszczenie specjalnego skryptu JavaScript na stronie (filtr działa bez Java­Script, ale z mniej­szą skutecznością). Miejsce umieszczenia jest ważne — skrypt musi być dodany za końcowym tagiem </form> formularza, który będzie filtrowany:

<form action="…" method="post">
 …
</form>
<script src="sblam.js.php" type="text/javascript"></script>

Popraw ścieżkę z przykładu tak, aby wskazywała na plik sblam.js.php na twoim serwerze.

Skrypt nie zadziała jeśli masz bardzo nieprawidłowy HTML. W szczególności poplątane i niepozamykane tagi tabel mogą uniemożliwić działanie skryptu.

3. Utworzenie swojego konta (klucza API)

Sblam! pozwala założyć konta, dzięki którym można sprawdzić poprawonść instalacji i przeglądać złapane spamy. Zakładanie konta zostało opisane na osobnej stronie.

4. Testowanie filtru

Nie próbuj wysyłać testowych spamów! Jeśli samemu spróbujesz spreparować spam, to są tylko dwie możliwości:

  • Filtr nie da się nabrać, bo sprawdza dużo więcej, niż tylko słowa i nie zobaczysz jak działa blokowanie.
  • Uda ci się przekonać filtr, że jesteś spamerem i zostaniesz potraktowany jak spamer ze wszystkimi tego konsekwencjami.

Żeby bezpiecznie i pewnie sprawdzić jak działa blokowanie, wyślij post o treści „to jest test spamu” (tylko ten tekst i nic więcej). Ta specjalna wiadomość powoduje, że Sblam! oznacza post jako spam, ale nie uznaje jego autora za spamera.

Jeśli wpisanie „to jest test spamu” nie powoduje zaklasyfikowania postu jako spam, to najpraw­do­po­dobniej Sblam! nie potrafił automa­tycznie rozpoznać nazw pól w twoim formularzu i musisz je podać.

Żeby sprawdzić jak posty są przepuszczane, napisz jakiś normalny post (albo skopiuj jakiś poprzedni, który nie jest spamem).

Wyślij post zawierający polskie litery (sczególnie „ś” i „ą”) i po zalogowaniu się do konta sprawdź, czy dotarły do serwera i czy polskie znaki wyświetlają się poprawnie. Jeśli nie, to najprawdopodobniej używasz niestandardowego kodowania znaków Windows 1250, które przez Sblam! nie jest obsługiwane.

Nietypowe nazwy pól?

Jeśli testowe posty są przepuszczane albo po zalogowaniu się do konta widzisz posty z treścią nie tam, gdzie trzeba, to oznacza, że musisz określić jakich nazw pól używa twój formularz. Robi się to podając ich nazwy w tablicy przekazywanej do funkcji sblamtestpost():

<input type=text name="ksyfka">
$rezultat = sblamtestpost(array('tekscik', 'ksyfka', 'emil', 'linkdowuwuwu'));

Nazwy muszą być podane w odpowiedniej kolejności: tekst postu, podpis autora, adres e-mail podany przez autora oraz link do jego strony domowej. Jeśli nie przewidujesz danego pola w formularzu, to zamiast jego nazwy podaj NULL.

Ważne: podaj tylko nazwy pól, a nie ich zawartość (skrypt sam sobie weźmie zawartość z $_POST).

Zwróć też uwagę, że lista pól jest w array(), a nie jako parametry funkcji.

Coś jeszcze?

Dodatkowo zainstaluj czarną listę.

Kontakt z autorem.

Pobierz skrypt skrypt jest darmowy — licencja

Wymagania

  • PHP 4.2+ lub PHP 5.
  • Włączone (standardowe) rozszerzenie sockets.
  • Podstawowa znajomość programowania w PHP.
Kontakt Mapa strony Licencja Atom Feed
2007.10. Autor Sblam: porneL, Webmasterka: Falka