Zend_Service_Akismet.xml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15157 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.service.akismet">
  5. <title>Zend_Service_Akismet</title>
  6. <sect2 id="zend.service.akismet.introduction">
  7. <title>Einführung</title>
  8. <para>
  9. <classname>Zend_Service_Akismet</classname> bietet einen Client für die
  10. <ulink url="http://akismet.com/development/api/">Akismet API</ulink>. Der Akismet Service wird
  11. verwendet um herauszufinden ob hereinkommende Daten potentieller Spam sind; Er bietet auch
  12. Methoden für das Übertragen von Daten als bekannter Spam oder als falsch Positiv (ham). Original
  13. dazu gedacht um für Wordpress zu kategorisieren und Spam zu identifizieren, kann es für alle Arten
  14. von Daten verwendet werden.
  15. </para>
  16. <para>
  17. Akismet benötigt einen API Schlüssel um verwendet zu werden. Kan kann einen bekommen indem man sich
  18. für einen <ulink url="http://wordpress.com/">WordPress.com</ulink> Zugang einschreibt. Man muß
  19. keinen Blog aktivieren; nur das Erstellen des Accounts reicht um den API Schlüssel zu erhalten.
  20. </para>
  21. <para>
  22. Zusätzlich erfordert Akismet das alle Anfragen eine URL zu der Ressource enthalten für die die Daten
  23. gefiltert werden und, weil Akismeth's Ursprung Wordpress ist, wird diese Ressource die Blog URL
  24. genannt. Dieser Wert sollte als zweites Argument an den Konstruktor übergeben werden; aber er kann
  25. zu jeder Zeit resetiert werden in dem der <code>setBlogUrl()</code> Accessor verwendet wird, oder
  26. überschrieben durch die Spezifizierung eines 'blog' Schlüssels in den verschiedenen Methodenaufrufen.
  27. </para>
  28. </sect2>
  29. <sect2 id="zend.service.akismet.verifykey">
  30. <title>Prüfen eines API Schlüssels</title>
  31. <para>
  32. <classname>Zend_Service_Akismet::verifyKey($key)</classname> wird verwendet um zu prüfen ob ein Akismet API
  33. Schlüssel gültig ist. In den meisten Fällen, besteht keine Notwendigkeit ihn zu prüfen, aber wenn
  34. eine Qualitätssicherung durchgeführt werden soll, oder eruiert werden soll ob ein neuerer
  35. erhaltener Schlüssel aktiv ist, kann das mit dieser Methode gemacht werden.
  36. </para>
  37. <programlisting role="php"><![CDATA[
  38. // Instanzieren mit dem API Schlüssel und einer URL zur Anwendung oder
  39. // Ressource die verwendet wird
  40. $akismet = new Zend_Service_Akismet($apiKey,
  41. 'http://framework.zend.com/wiki/');
  42. if ($akismet->verifyKey($apiKey) {
  43. echo "Schlüssel ist gültig.\n";
  44. } else {
  45. echo "Schlüssel ist ungültig\n";
  46. }
  47. ]]></programlisting>
  48. <para>
  49. Wenn <code>verifyKey()</code> ohne Argumente aufgerufen wird, verwendet es den API Schlüssel der
  50. im Konstruktor angegeben wurde.
  51. </para>
  52. <para>
  53. <code>verifyKey()</code> implementiert Akismet's <code>verify-key</code> REST Methode.
  54. </para>
  55. </sect2>
  56. <sect2 id="zend.service.akismet.isspam">
  57. <title>Auf Spam prüfen</title>
  58. <para>
  59. <classname>Zend_Service_Akismet::isSpam($data)</classname> wird verwendet um zu prüfen ob die übergebenen
  60. Daten von Akismet als Spam erkannt werden. Es wird ein assoziatives Array als Basisargument
  61. akzeptiert. Das Array erfordert das die folgenden Schlüssel gesetzt werden:
  62. </para>
  63. <itemizedlist>
  64. <listitem>
  65. <para>
  66. <code>user_ip</code>, die IP Adresse des Benutzer der die Daten übermittelt (nicht die
  67. eigene IP Adresse, aber die des Benutzers der eigenen Seite).
  68. </para>
  69. </listitem>
  70. <listitem>
  71. <para>
  72. <code>user_agent</code>, der mitgeteilte String des BenutzerAgenten (Browser und Version)
  73. oder der Benutzer der die Daten überträgt.
  74. </para>
  75. </listitem>
  76. </itemizedlist>
  77. <para>
  78. Die folgenden Schlüssel werden im speziellen auch von der API erkannt:
  79. </para>
  80. <itemizedlist>
  81. <listitem>
  82. <para>
  83. <code>blog</code>, die komplett qualifizierte URL zur Ressource oder Anwendung. Wenn nicht
  84. angegeben, wird die URL verwendet die beim Konstruktor angegeben wurde.
  85. </para>
  86. </listitem>
  87. <listitem>
  88. <para>
  89. <code>referrer</code>, der Inhalt des HTTP_REFERER Headers zur Zeit der Übertragung.
  90. (Beachte die Schreibweise; sie folgt nicht dem Header Namen)
  91. </para>
  92. </listitem>
  93. <listitem>
  94. <para>
  95. <code>permalink</code>, Der Ort des Permalinks vom Eintrag der Daten die übertragen wurden,
  96. wenn vorhanden.
  97. </para>
  98. </listitem>
  99. <listitem>
  100. <para>
  101. <code>comment_type</code>, der Typ von Daten die angegeben wurden. In der API spezifizierte
  102. Werte enthalten 'comment', 'trackback', 'pingback', und einen leeren String (''), können aber
  103. beliebige Werte sein.
  104. </para>
  105. </listitem>
  106. <listitem>
  107. <para>
  108. <code>comment_author</code>, Name der Person die die Daten überträgt.
  109. </para>
  110. </listitem>
  111. <listitem>
  112. <para>
  113. <code>comment_author_email</code>, Email der Person die die Daten überträgt.
  114. </para>
  115. </listitem>
  116. <listitem>
  117. <para>
  118. <code>comment_author_url</code>, URL oder Homepage der Person die die Daten überträgt.
  119. </para>
  120. </listitem>
  121. <listitem>
  122. <para>
  123. <code>comment_content</code>, aktuell übertragener Dateninhalt.
  124. </para>
  125. </listitem>
  126. </itemizedlist>
  127. <para>
  128. Es können auch beliebige andere Umgebungsvariablen übermittelt werden von denen angenommen wird, das
  129. Sie bei er Ermittlung helfen ob Daten Spam sind. Akismet empfiehlt den Inhalt des kompletten
  130. $_SERVER Arrays.
  131. </para>
  132. <para>
  133. Die <code>isSpam()</code> gibt true oder false zurück, und wirft eine Ausnahme wenn der API Schlüssel
  134. nicht gültig ist.
  135. </para>
  136. <example id="zend.service.akismet.isspam.example-1">
  137. <title>Verwendung von isSpam()</title>
  138. <programlisting role="php"><![CDATA[
  139. $data = array(
  140. 'user_ip' => '111.222.111.222',
  141. 'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT ' .
  142. '5.2; en-GB; rv:1.8.1) Gecko/20061010 ' .
  143. 'Firefox/2.0',
  144. 'comment_type' => 'contact',
  145. 'comment_author' => 'John Doe',
  146. 'comment_author_email' => 'nospam@myhaus.net',
  147. 'comment_content' => "Ich bin kein Spammer, ehrlich!"
  148. );
  149. if ($akismet->isSpam($data)) {
  150. echo "Sorry, aber wir denken das Du ein Spammer bist.";
  151. } else {
  152. echo "Willkommen auf unserer Seite!";
  153. }
  154. ]]></programlisting>
  155. </example>
  156. <para>
  157. <code>isSpam()</code> implementiert die <code>comment-check</code> Methode der Akismet API.
  158. </para>
  159. </sect2>
  160. <sect2 id="zend.service.akismet.submitspam">
  161. <title>Bekannten Spam übertragen</title>
  162. <para>
  163. Gelegentlich werden Spam Daten durch den Filter kommen. Wenn in der Begutachtung der hereinkommenden
  164. Daten Spam erkannt wird, und man das Gefühl hat das er gefunden werden sollte, kann er an Akismet
  165. übertragen werden um deren Filter zu verbessern.
  166. </para>
  167. <para>
  168. <classname>Zend_Service_Akismet::submitSpam()</classname> nimmt das selbe Datenarray entgegen wie es der
  169. <code>isSpam()</code> übergeben wird, aber es wird kein Wert zurückgegeben. Eine Ausnahme wird
  170. geworfen wenn der API Schlüsel ungültig ist.
  171. </para>
  172. <example id="zend.service.akismet.submitspam.example-1">
  173. <title>Verwendung von submitSpam()</title>
  174. <programlisting role="php"><![CDATA[
  175. $data = array(
  176. 'user_ip' => '111.222.111.222',
  177. 'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.2;' .
  178. 'en-GB; rv:1.8.1) Gecko/20061010 Firefox/2.0',
  179. 'comment_type' => 'contact',
  180. 'comment_author' => 'John Doe',
  181. 'comment_author_email' => 'nospam@myhaus.net',
  182. 'comment_content' => "Ich bin kein Spammer, ehrlich!"
  183. );
  184. $akismet->submitSpam($data));
  185. ]]></programlisting>
  186. </example>
  187. <para>
  188. <code>submitSpam()</code> implementiert die <code>submit-spam</code> Methode der Akismet API.
  189. </para>
  190. </sect2>
  191. <sect2 id="zend.service.akismet.submitham">
  192. <title>Falsche Positive (Ham) übermitteln</title>
  193. <para>
  194. Gelegentlich werden Daten fehlerhafterweise von Akismet als Spam erkannt. Für diesen Fall, sollte
  195. ein Log aller Daten behalten werden, indem alle Daten die von Akismet als Spam erkannt, geloggt
  196. werden und dieses von Zeit zu Zeit durchgesehen. Wenn solche Fülle gefunden werden, können die Daten
  197. an Akismet als "Ham", oder falsche Positive übermittelt werden (Ham ist gut, Spam ist schlecht)
  198. </para>
  199. <para>
  200. <classname>Zend_Service_Akismet::submitHam()</classname> nimmt das selbe Datenarray entgegen wie
  201. <code>isSpam()</code> oder <code>submitSpam()</code>, und wie bei <code>submitSpam()</code> wird
  202. kein Wert zurückgegeben. Eine Ausnahme wird geworfen wenn der verwendete API Schlüssel ungültig ist.
  203. </para>
  204. <example id="zend.service.akismet.submitham.example-1">
  205. <title>Verwenden von submitHam()</title>
  206. <programlisting role="php"><![CDATA[
  207. $data = array(
  208. 'user_ip' => '111.222.111.222',
  209. 'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.2;' .
  210. 'en-GB; rv:1.8.1) Gecko/20061010 Firefox/2.0',
  211. 'comment_type' => 'contact',
  212. 'comment_author' => 'John Doe',
  213. 'comment_author_email' => 'nospam@myhaus.net',
  214. 'comment_content' => "I'm not a spammer, honest!"
  215. );
  216. $akismet->submitHam($data));
  217. ]]></programlisting>
  218. </example>
  219. <para>
  220. <code>submitHam()</code> implementiert die <code>submit-ham</code> Methode der Akismet API.
  221. </para>
  222. </sect2>
  223. <sect2 id="zend.service.akismet.accessors">
  224. <title>Zend-spezielle Zugriffsmethoden</title>
  225. <para>
  226. Wärend die Akismet API nur vier Methoden spezifiziert, hat <classname>Zend_Service_Akismet</classname>
  227. verschiedene zusätzliche Helfer die für die Modifikation von internen Eigenschaften verwendet
  228. werden können.
  229. </para>
  230. <itemizedlist>
  231. <listitem>
  232. <para>
  233. <code>getBlogUrl()</code> und <code>setBlogUrl()</code> erlaubt das Empfangen und Ändern der
  234. Blog URL die in den Anfragen verwendet wird.
  235. </para>
  236. </listitem>
  237. <listitem>
  238. <para>
  239. <code>getApiKey()</code> und <code>setApiKey()</code> erlauben das Empfangen und Ändern des
  240. API Schlüssels der in Anfragen verwendet wird.
  241. </para>
  242. </listitem>
  243. <listitem>
  244. <para>
  245. <code>getCharset()</code> und <code>setCharset()</code> erlauben das Empfangen und Ändern
  246. des Zeichensatzes der verwendet wird um die Anfrage durchzuführen.
  247. </para>
  248. </listitem>
  249. <listitem>
  250. <para>
  251. <code>getPort()</code> und <code>setPort()</code> erlauben das Empfangen und Ändern des
  252. TCP Ports der verwendet wird um die Anfrage durchzuführen.
  253. </para>
  254. </listitem>
  255. <listitem>
  256. <para>
  257. <code>getUserAgent()</code> und <code>setUserAgent()</code> erlauben das Empfangen und
  258. Ändern des HTTP Benutzer Agenten der verwendet wird um die Anfrage durchzuführen.
  259. Beachte: Das ist nicht der user_agent der in den Daten verwendet wird die in den Service
  260. übertragen werden, aber der Wert der übergeben wird, wenn eine Anfrage an den Service
  261. durchgeführt wird.
  262. </para>
  263. <para>
  264. Der Wert der verwendet wird um den Benutzer Agenten zu setzen sollte die Form
  265. <code>ein Benutzer Agent/Version | Akismet/Version</code> haben. Der Standardwert ist
  266. <code>Zend Framework/ZF-VERSION | Akismet/1.11</code>, wobei <code>ZF-VERSION</code>
  267. die aktuelle Version des Zend Frameworks ist wie in der Konstante
  268. <classname>Zend_Framework::VERSION</classname> gespeichert.
  269. </para>
  270. </listitem>
  271. </itemizedlist>
  272. </sect2>
  273. </sect1>
  274. <!--
  275. vim:se ts=4 sw=4 et:
  276. -->