Zend_Service_Akismet.xml 15 KB

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