Zend_Service_Akismet.xml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. <sect1 id="zend.service.akismet">
  2. <title>Zend_Service_Akismet</title>
  3. <sect2 id="zend.service.akismet.introduction">
  4. <title>Wprowadzenie</title>
  5. <para>
  6. Komponent <code>Zend_Service_Akismet</code> jest klientem dla <ulink
  7. url="http://akismet.com/development/api/">API serwisu Akismet</ulink>.
  8. Serwis Akismet jest używany do określenia czy nadesłane dane są
  9. potencjalnym spamem; udostępnia on także metody do nadsyłania danych,
  10. które uznamy za spam, oraz danych, które niesłusznie zostały uznane
  11. za spam (czyli ham). Pierwotnie serwis Akismet służył do kategoryzowania
  12. i identyfikowania spamu dla aplikacji Wordpress, ale obecnie może być
  13. użyty do dowolnych danych.
  14. </para>
  15. <para>
  16. Do użycia serwisu Akismet wymagane jest posiadanie klucza API. Możesz
  17. go otrzymać rejestrując konto w serwisie
  18. <ulink url="http://wordpress.com/">WordPress.com</ulink>. Nie musisz
  19. aktywować bloga; samo założenie konta umożliwi ci otrzymanie klucza
  20. API.
  21. </para>
  22. <para>
  23. Dodatkowo Akismet wymaga aby wszystkie żądania zawierały adres URL
  24. do zasobu, dla którego dane są filtrowane, i z tego względu, że
  25. Akismet pochodzi z WordPress, ten zasób nazywany jest adresem bloga
  26. (blog url). Ta wartość powinna być przekazana jako drugi argument do
  27. konstruktora, ale może być zresetowana w dowolnej chwili za pomocą
  28. metody dostępowej <code>setBlogUrl()</code> lub nadpisana przez
  29. określenie klucza 'blog' w różnych wywołaniach metod.
  30. </para>
  31. </sect2>
  32. <sect2 id="zend.service.akismet.verifykey">
  33. <title>Weryfikowanie klucza API</title>
  34. <para>
  35. Metoda <code>Zend_Service_Akismet::verifyKey($key)</code> jest
  36. używana do weryfikowania poprawności klucza API Akismet.
  37. W większości przypadków nie musisz tego sprawdzać, ale jeśli chcesz
  38. przeprowadzić test dla pewności lub sprawdzić czy otrzymany klucz
  39. jest aktywny, możesz to zrobić za pomocą tej metody.
  40. </para>
  41. <programlisting role="php"><![CDATA[
  42. // Tworzymy instancję podając klucz API
  43. // i adres URL używanej aplikacji
  44. $akismet = new Zend_Service_Akismet($apiKey,
  45. 'http://framework.zend.com/wiki/');
  46. if ($akismet->verifyKey($apiKey) {
  47. echo "Key is valid.\n";
  48. } else {
  49. echo "Key is not valid\n";
  50. }
  51. ]]>
  52. </programlisting>
  53. <para>
  54. Jeśli metoda <code>verifyKey()</code> jest wywołana bez żadnych
  55. argumentów, to używany jest klucz API, który był podany do
  56. konstruktora.
  57. </para>
  58. <para>
  59. Metoda <code>verifyKey()</code> implementuje metodę REST
  60. <code>verify-key</code> serwisu Akismet.
  61. </para>
  62. </sect2>
  63. <sect2 id="zend.service.akismet.isspam">
  64. <title>Sprawdzanie czy dane są spamem</title>
  65. <para>
  66. Metoda <code>Zend_Service_Akismet::isSpam($data)</code> jest używana
  67. do sprawdzenia, czy przekazane dane są uznane przez Akismet jako
  68. spam. Metoda przyjmuje tablicę asocjacyjną jako jedyny argument.
  69. Tablica ta wymaga zdefiniowania poniższych kluczy:
  70. </para>
  71. <itemizedlist>
  72. <listitem>
  73. <para>
  74. <code>user_ip</code>, adres IP użytkownika wysyłającego
  75. dane (nie twój adres IP, tylko użytkownika twojego serwisu)
  76. </para>
  77. </listitem>
  78. <listitem>
  79. <para>
  80. <code>user_agent</code>, nazwa klienta HTTP (przeglądarka
  81. oraz wersja) użytkownika wysyłającego dane.
  82. </para>
  83. </listitem>
  84. </itemizedlist>
  85. <para>
  86. Poniższe klucze są także rozpoznawane przez API:
  87. </para>
  88. <itemizedlist>
  89. <listitem>
  90. <para>
  91. <code>blog</code>, pełny adres URL do zasobu lub aplikacji.
  92. Jeśli nie jest określony, zostanie użyty adres URL, który
  93. był podany do konstruktora.
  94. </para>
  95. </listitem>
  96. <listitem>
  97. <para>
  98. <code>referrer</code>, zawartość nagłówka HTTP_REFERER w
  99. trakcie wysyłania danych. (Zwróć uwagę na pisownię; nie jest
  100. ona taka sama jak nazwa nagłówka.)
  101. </para>
  102. </listitem>
  103. <listitem>
  104. <para>
  105. <code>permalink</code>, bezpośredni odnośnik do wpisu, dla
  106. którego dane są przesyłane.
  107. </para>
  108. </listitem>
  109. <listitem>
  110. <para>
  111. <code>comment_type</code>, typ przesyłanych danych.
  112. Możliwe wartości określone w API to 'comment', 'trackback',
  113. 'pingback', oraz pusty łańcuch znaków (''), ale wartość
  114. może być dowolna.
  115. </para>
  116. </listitem>
  117. <listitem>
  118. <para>
  119. <code>comment_author</code>, nazwa osoby dodającej dane.
  120. </para>
  121. </listitem>
  122. <listitem>
  123. <para>
  124. <code>comment_author_email</code>, adres email osoby
  125. dodającej dane.
  126. </para>
  127. </listitem>
  128. <listitem>
  129. <para>
  130. <code>comment_author_url</code>, adres URL lub strona
  131. domowa osoby dodającej dane.
  132. </para>
  133. </listitem>
  134. <listitem>
  135. <para>
  136. <code>comment_content</code>, aktualnie wysłana zawartość
  137. komentarza.
  138. </para>
  139. </listitem>
  140. </itemizedlist>
  141. <para>
  142. Możesz także przesłać dowolne inne zmienne opisujące środowisko,
  143. ktore według ciebie mogą być pomocne w zweryfikowaniu danych pod
  144. kątem spamu. Serwis Akismet sugeruje, aby była to cała zawartość
  145. tablicy $_SERVER.
  146. </para>
  147. <para>
  148. Metoda <code>isSpam()</code> zwróci wartość logiczną true lub false,
  149. a w przypadku gdy klucz API jest nieprawidłowy, wyrzuci wyjątek.
  150. </para>
  151. <example id="zend.service.akismet.isspam.example-1">
  152. <title>Użycie metody isSpam()</title>
  153. <programlisting role="php"><![CDATA[
  154. $data = array(
  155. 'user_ip' => '111.222.111.222',
  156. 'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT' .
  157. '5.2; en-GB; rv:1.8.1) Gecko/20061010' .
  158. 'Firefox/2.0',
  159. 'comment_type' => 'contact',
  160. 'comment_author' => 'John Doe',
  161. 'comment_author_email' => 'nospam@myhaus.net',
  162. 'comment_content' => "I'm not a spammer, honest!"
  163. );
  164. if ($akismet->isSpam($data)) {
  165. echo "Sorry, but we think you're a spammer.";
  166. } else {
  167. echo "Welcome to our site!";
  168. }
  169. ]]>
  170. </programlisting>
  171. </example>
  172. <para>
  173. Metoda <code>isSpam()</code> implementuje metodę <code>comment-check</code>
  174. API serwisu Akismet.
  175. </para>
  176. </sect2>
  177. <sect2 id="zend.service.akismet.submitspam">
  178. <title>Wysyłanie informacji o spamie</title>
  179. <para>
  180. Czasem dane, które są spamem mogą przejść przez filtr. Jeśli
  181. będziesz przeglądał przychodzące dane i znajdziesz dane, które
  182. według ciebie powinny być uznane za spam, możesz wysłać je do
  183. Akismet aby pomóc ulepszyć filtr.
  184. </para>
  185. <para>
  186. Metoda <code>Zend_Service_Akismet::submitSpam()</code> przyjmuje
  187. taką samą tablicę danych jak metoda <code>isSpam()</code>, ale nie
  188. zwraca wartości. Jeśli klucz API jest nieprawidłowy, zostanie
  189. wyrzucony wyjątek.
  190. </para>
  191. <example id="zend.service.akismet.submitspam.example-1">
  192. <title>Użycie metody submitSpam()</title>
  193. <programlisting role="php"><![CDATA[
  194. $data = array(
  195. 'user_ip' => '111.222.111.222',
  196. 'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.2;' .
  197. 'en-GB; rv:1.8.1) Gecko/20061010' .
  198. 'Firefox/2.0',
  199. 'comment_type' => 'contact',
  200. 'comment_author' => 'John Doe',
  201. 'comment_author_email' => 'nospam@myhaus.net',
  202. 'comment_content' => "I'm not a spammer, honest!"
  203. );
  204. $akismet->submitSpam($data));
  205. ]]>
  206. </programlisting>
  207. </example>
  208. <para>
  209. Metoda <code>submitSpam()</code> implementuje metodę <code>submit-spam</code>
  210. API serwisu Akismet.
  211. </para>
  212. </sect2>
  213. <sect2 id="zend.service.akismet.submitham">
  214. <title>Wysyłanie informacji o fałszywym spamie (ham)</title>
  215. <para>
  216. Czasem dane zostaną przez Akismet błędnie uznane za spam. Z tego
  217. względu, powinieneś zapisywać dane uznane przez Akismet za spam i
  218. regularnie je przeglądać. Jeśli znajdziesz takie przypadki, możesz
  219. wysłać takie dane do Akismet jako "ham" czyli poprawne dane błędnie
  220. uznane za spam (ham jest dobry, spam nie jest).
  221. </para>
  222. <para>
  223. Metoda <code>Zend_Service_Akismet::submitHam()</code> przyjmuje
  224. taką samą tablicę danych jak metody <code>isSpam()</code> oraz
  225. <code>submitSpam()</code> i tak samo jak metoda
  226. <code>submitSpam()</code> nie zwraca wartości. Jeśli klucz API jest
  227. nieprawidłowy, zostanie wyrzucony wyjątek.
  228. </para>
  229. <example id="zend.service.akismet.submitham.example-1">
  230. <title>Użycie metody submitHam()</title>
  231. <programlisting role="php"><![CDATA[
  232. $data = array(
  233. 'user_ip' => '111.222.111.222',
  234. 'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.2;' .
  235. 'en-GB; rv:1.8.1) Gecko/20061010' .
  236. 'Firefox/2.0',
  237. 'comment_type' => 'contact',
  238. 'comment_author' => 'John Doe',
  239. 'comment_author_email' => 'nospam@myhaus.net',
  240. 'comment_content' => "I'm not a spammer, honest!"
  241. );
  242. $akismet->submitHam($data));
  243. ]]>
  244. </programlisting>
  245. </example>
  246. <para>
  247. Metoda <code>submitHam()</code> implementuje metodę <code>submit-ham</code>
  248. API serwisu Akismet.
  249. </para>
  250. </sect2>
  251. <sect2 id="zend.service.akismet.accessors">
  252. <title>Specyficzne metody dostępowe</title>
  253. <para>
  254. O ile API serwisu Akismet określa jedynie cztery metody,
  255. komponent <code>Zend_Service_Akismet</code> posiada kilka
  256. dodatkowych metod dostępowych, które mogą być użyte do modyfikowania
  257. wewnętrznych właściwości.
  258. </para>
  259. <itemizedlist>
  260. <listitem>
  261. <para>
  262. Metody <code>getBlogUrl()</code> oraz <code>setBlogUrl()</code>
  263. pozwalają ci na odebranie oraz modyfikację adresu URL bloga
  264. używanego w żądaniach.
  265. </para>
  266. </listitem>
  267. <listitem>
  268. <para>
  269. Metody <code>getApiKey()</code> oraz <code>setApiKey()</code>
  270. pozwalają ci na odebranie oraz modyfikację klucza API
  271. używanego w żądaniach.
  272. </para>
  273. </listitem>
  274. <listitem>
  275. <para>
  276. Metody <code>getCharset()</code> oraz <code>setCharset()</code>
  277. pozwalają ci na odebranie oraz modyfikację zestawu znaków
  278. używanego w żądaniach.
  279. </para>
  280. </listitem>
  281. <listitem>
  282. <para>
  283. Metody <code>getPort()</code> oraz <code>setPort()</code>
  284. pozwalają ci na odebranie oraz modyfikację portu TCP
  285. używanego w żądaniach.
  286. </para>
  287. </listitem>
  288. <listitem>
  289. <para>
  290. Metody <code>getUserAgent()</code> oraz
  291. <code>setUserAgent()</code> pozwalają ci na pobranie oraz
  292. modyfikowanie informacji o kliencie HTTP używanym do
  293. przeprowadzenia żądania.
  294. Nota: nie jest to ta sama wartość co user_agent, która jest
  295. używana w danych wysyłanych do serwisu, ale raczej wartość,
  296. która będzie wysłana w nagłówku HTTP User-Agent podczas
  297. przeprowadzania żądania do serwisu.
  298. </para>
  299. <para>
  300. Wartość użyta do ustawienia nazwy klienta HTTP powinna być
  301. w formacie <code>nazwa klienta/wersja | Akismet/wersja</code>.
  302. Domyślna wartość to <code>Zend Framework/ZF-VERSION | Akismet/1.11</code>,
  303. gdzie <code>ZF-VERSION</code> jest numerem obecnej wersji ZF
  304. przechowywanym w stałej <code>Zend_Framework::VERSION</code>.
  305. </para>
  306. </listitem>
  307. </itemizedlist>
  308. </sect2>
  309. </sect1>