1 <sect1 id="zend.service.akismet">
2 <title>Zend_Service_Akismet</title>
4 <sect2 id="zend.service.akismet.introduction">
5 <title>Wprowadzenie</title>
8 Komponent <code>Zend_Service_Akismet</code> jest klientem dla <ulink
9 url="http://akismet.com/development/api/">API serwisu Akismet</ulink>.
10 Serwis Akismet jest używany do określenia czy nadesłane dane są
11 potencjalnym spamem; udostępnia on także metody do nadsyłania danych,
12 które uznamy za spam, oraz danych, które niesłusznie zostały uznane
13 za spam (czyli ham). Pierwotnie serwis Akismet służył do kategoryzowania
14 i identyfikowania spamu dla aplikacji Wordpress, ale obecnie może być
15 użyty do dowolnych danych.
19 Do użycia serwisu Akismet wymagane jest posiadanie klucza API. Możesz
20 go otrzymać rejestrując konto w serwisie
21 <ulink url="http://wordpress.com/">WordPress.com</ulink>. Nie musisz
22 aktywować bloga; samo założenie konta umożliwi ci otrzymanie klucza
27 Dodatkowo Akismet wymaga aby wszystkie żądania zawierały adres URL
28 do zasobu, dla którego dane są filtrowane, i z tego względu, że
29 Akismet pochodzi z WordPress, ten zasób nazywany jest adresem bloga
30 (blog url). Ta wartość powinna być przekazana jako drugi argument do
31 konstruktora, ale może być zresetowana w dowolnej chwili za pomocą
32 metody dostępowej <code>setBlogUrl()</code> lub nadpisana przez
33 określenie klucza 'blog' w różnych wywołaniach metod.
37 <sect2 id="zend.service.akismet.verifykey">
38 <title>Weryfikowanie klucza API</title>
41 Metoda <code>Zend_Service_Akismet::verifyKey($key)</code> jest
42 używana do weryfikowania poprawności klucza API Akismet.
43 W większości przypadków nie musisz tego sprawdzać, ale jeśli chcesz
44 przeprowadzić test dla pewności lub sprawdzić czy otrzymany klucz
45 jest aktywny, możesz to zrobić za pomocą tej metody.
48 <programlisting role="php"><![CDATA[
49 // Tworzymy instancję podając klucz API
50 // i adres URL używanej aplikacji
51 $akismet = new Zend_Service_Akismet($apiKey,
52 'http://framework.zend.com/wiki/');
53 if ($akismet->verifyKey($apiKey) {
54 echo "Key is valid.\n";
56 echo "Key is not valid\n";
62 Jeśli metoda <code>verifyKey()</code> jest wywołana bez żadnych
63 argumentów, to używany jest klucz API, który był podany do
68 Metoda <code>verifyKey()</code> implementuje metodę REST
69 <code>verify-key</code> serwisu Akismet.
73 <sect2 id="zend.service.akismet.isspam">
74 <title>Sprawdzanie czy dane są spamem</title>
77 Metoda <code>Zend_Service_Akismet::isSpam($data)</code> jest używana
78 do sprawdzenia, czy przekazane dane są uznane przez Akismet jako
79 spam. Metoda przyjmuje tablicę asocjacyjną jako jedyny argument.
80 Tablica ta wymaga zdefiniowania poniższych kluczy:
86 <code>user_ip</code>, adres IP użytkownika wysyłającego
87 dane (nie twój adres IP, tylko użytkownika twojego serwisu)
93 <code>user_agent</code>, nazwa klienta HTTP (przeglądarka
94 oraz wersja) użytkownika wysyłającego dane.
100 Poniższe klucze są także rozpoznawane przez API:
106 <code>blog</code>, pełny adres URL do zasobu lub aplikacji.
107 Jeśli nie jest określony, zostanie użyty adres URL, który
108 był podany do konstruktora.
114 <code>referrer</code>, zawartość nagłówka HTTP_REFERER w
115 trakcie wysyłania danych. (Zwróć uwagę na pisownię; nie jest
116 ona taka sama jak nazwa nagłówka.)
122 <code>permalink</code>, bezpośredni odnośnik do wpisu, dla
123 którego dane są przesyłane.
129 <code>comment_type</code>, typ przesyłanych danych.
130 Możliwe wartości określone w API to 'comment', 'trackback',
131 'pingback', oraz pusty łańcuch znaków (''), ale wartość
138 <code>comment_author</code>, nazwa osoby dodającej dane.
144 <code>comment_author_email</code>, adres email osoby
151 <code>comment_author_url</code>, adres URL lub strona
152 domowa osoby dodającej dane.
158 <code>comment_content</code>, aktualnie wysłana zawartość
165 Możesz także przesłać dowolne inne zmienne opisujące środowisko,
166 ktore według ciebie mogą być pomocne w zweryfikowaniu danych pod
167 kątem spamu. Serwis Akismet sugeruje, aby była to cała zawartość
172 Metoda <code>isSpam()</code> zwróci wartość logiczną true lub false,
173 a w przypadku gdy klucz API jest nieprawidłowy, wyrzuci wyjątek.
176 <example id="zend.service.akismet.isspam.example-1">
177 <title>Użycie metody isSpam()</title>
179 <programlisting role="php"><![CDATA[
181 'user_ip' => '111.222.111.222',
182 'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT' .
183 '5.2; en-GB; rv:1.8.1) Gecko/20061010' .
185 'comment_type' => 'contact',
186 'comment_author' => 'John Doe',
187 'comment_author_email' => 'nospam@myhaus.net',
188 'comment_content' => "I'm not a spammer, honest!"
190 if ($akismet->isSpam($data)) {
191 echo "Sorry, but we think you're a spammer.";
193 echo "Welcome to our site!";
200 Metoda <code>isSpam()</code> implementuje metodę <code>comment-check</code>
205 <sect2 id="zend.service.akismet.submitspam">
206 <title>Wysyłanie informacji o spamie</title>
209 Czasem dane, które są spamem mogą przejść przez filtr. Jeśli
210 będziesz przeglądał przychodzące dane i znajdziesz dane, które
211 według ciebie powinny być uznane za spam, możesz wysłać je do
212 Akismet aby pomóc ulepszyć filtr.
216 Metoda <code>Zend_Service_Akismet::submitSpam()</code> przyjmuje
217 taką samą tablicę danych jak metoda <code>isSpam()</code>, ale nie
218 zwraca wartości. Jeśli klucz API jest nieprawidłowy, zostanie
222 <example id="zend.service.akismet.submitspam.example-1">
223 <title>Użycie metody submitSpam()</title>
225 <programlisting role="php"><![CDATA[
227 'user_ip' => '111.222.111.222',
228 'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.2;' .
229 'en-GB; rv:1.8.1) Gecko/20061010' .
231 'comment_type' => 'contact',
232 'comment_author' => 'John Doe',
233 'comment_author_email' => 'nospam@myhaus.net',
234 'comment_content' => "I'm not a spammer, honest!"
236 $akismet->submitSpam($data));
242 Metoda <code>submitSpam()</code> implementuje metodę <code>submit-spam</code>
247 <sect2 id="zend.service.akismet.submitham">
248 <title>Wysyłanie informacji o fałszywym spamie (ham)</title>
251 Czasem dane zostaną przez Akismet błędnie uznane za spam. Z tego
252 względu, powinieneś zapisywać dane uznane przez Akismet za spam i
253 regularnie je przeglądać. Jeśli znajdziesz takie przypadki, możesz
254 wysłać takie dane do Akismet jako "ham" czyli poprawne dane błędnie
255 uznane za spam (ham jest dobry, spam nie jest).
259 Metoda <code>Zend_Service_Akismet::submitHam()</code> przyjmuje
260 taką samą tablicę danych jak metody <code>isSpam()</code> oraz
261 <code>submitSpam()</code> i tak samo jak metoda
262 <code>submitSpam()</code> nie zwraca wartości. Jeśli klucz API jest
263 nieprawidłowy, zostanie wyrzucony wyjątek.
266 <example id="zend.service.akismet.submitham.example-1">
267 <title>Użycie metody submitHam()</title>
269 <programlisting role="php"><![CDATA[
271 'user_ip' => '111.222.111.222',
272 'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.2;' .
273 'en-GB; rv:1.8.1) Gecko/20061010' .
275 'comment_type' => 'contact',
276 'comment_author' => 'John Doe',
277 'comment_author_email' => 'nospam@myhaus.net',
278 'comment_content' => "I'm not a spammer, honest!"
280 $akismet->submitHam($data));
286 Metoda <code>submitHam()</code> implementuje metodę <code>submit-ham</code>
291 <sect2 id="zend.service.akismet.accessors">
292 <title>Specyficzne metody dostępowe</title>
295 O ile API serwisu Akismet określa jedynie cztery metody,
296 komponent <code>Zend_Service_Akismet</code> posiada kilka
297 dodatkowych metod dostępowych, które mogą być użyte do modyfikowania
298 wewnętrznych właściwości.
304 Metody <code>getBlogUrl()</code> oraz <code>setBlogUrl()</code>
305 pozwalają ci na odebranie oraz modyfikację adresu URL bloga
306 używanego w żądaniach.
312 Metody <code>getApiKey()</code> oraz <code>setApiKey()</code>
313 pozwalają ci na odebranie oraz modyfikację klucza API
314 używanego w żądaniach.
320 Metody <code>getCharset()</code> oraz <code>setCharset()</code>
321 pozwalają ci na odebranie oraz modyfikację zestawu znaków
322 używanego w żądaniach.
328 Metody <code>getPort()</code> oraz <code>setPort()</code>
329 pozwalają ci na odebranie oraz modyfikację portu TCP
330 używanego w żądaniach.
336 Metody <code>getUserAgent()</code> oraz
337 <code>setUserAgent()</code> pozwalają ci na pobranie oraz
338 modyfikowanie informacji o kliencie HTTP używanym do
339 przeprowadzenia żądania.
340 Nota: nie jest to ta sama wartość co user_agent, która jest
341 używana w danych wysyłanych do serwisu, ale raczej wartość,
342 która będzie wysłana w nagłówku HTTP User-Agent podczas
343 przeprowadzania żądania do serwisu.
347 Wartość użyta do ustawienia nazwy klienta HTTP powinna być
348 w formacie <code>nazwa klienta/wersja | Akismet/wersja</code>.
349 Domyślna wartość to <code>Zend Framework/ZF-VERSION | Akismet/1.11</code>,
350 gdzie <code>ZF-VERSION</code> jest numerem obecnej wersji ZF
351 przechowywanym w stałej <code>Zend_Framework::VERSION</code>.