Zend_Service_Akismet.xml 14 KB

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