Zend_Http_Cookie-Handling.xml 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 20115 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.http.cookies">
  5. <title>Zend_Http_Cookie und Zend_Http_CookieJar</title>
  6. <sect2 id="zend.http.cookies.introduction">
  7. <title>Einführung</title>
  8. <para>
  9. Wie erwartet ist <classname>Zend_Http_Cookie</classname> eine Klasse, die einen
  10. <acronym>HTTP</acronym> Cookie darstellt. Sie stellt Methoden zum Verarbeiten von
  11. <acronym>HTTP</acronym> Antwort-Strings, Sammeln von Cookies und dem einfachen Zugriff
  12. auf deren Eigenschaften zur Verfügung. So ist es auch möglich verschiedene Zustände
  13. eines Cookies zu überprüfen, z.B. den Anfrage <acronym>URL</acronym>, die Ablaufzeit,
  14. das Vorliegen einer sicheren Verbindung, etc.
  15. </para>
  16. <para>
  17. <classname>Zend_Http_CookieJar</classname> ist ein Objekt, das normalerweise von der
  18. Klasse <classname>Zend_Http_Client</classname> genutzt wird und einen Satz von
  19. <classname>Zend_Http_Cookie</classname> Objekten beinhaltet. Die Idee ist das wenn ein
  20. <classname>Zend_Http_CookieJar</classname> an ein
  21. <classname>Zend_Http_Client</classname> Objekt angehängt wird, alle ein- und ausgehenden
  22. Cookies der <acronym>HTTP</acronym> Anfragen und -Antworten im CookieJar Objekt
  23. gespeichert werden. Bei einer neuen Anfrage seitens des Clients wird nach allen Cookies,
  24. die auf diese Anfrage zutreffen, gesucht. Diese werden automatisch
  25. zum Anfrage-Header hinzugefügt, was besonders nützlich ist, wenn man
  26. eine Benutzersession über aufeinanderfolgende <acronym>HTTP</acronym> Anfragen
  27. beibehalten muss; die Session-ID wird automatisch gesendet, wenn es notwendig ist.
  28. Ferner ist es möglich, <classname>Zend_Http_CookieJar</classname> Objekte zu
  29. serialisieren und, wenn nötig, in $_SESSION zu speichern.
  30. </para>
  31. </sect2>
  32. <sect2 id="zend.http.cookies.cookie.instantiating">
  33. <title>Instanzieren von Zend_Http_Cookie Objekten</title>
  34. <para>
  35. Es gibt zwei Möglichkeiten ein Cookie Objekt zu erstellen:
  36. <itemizedlist>
  37. <listitem>
  38. <para>
  39. Mithilfe des Konstruktors und der folgenden Syntax:
  40. <code>new <classname>Zend_Http_Cookie</classname>(string $name, string
  41. $value, string $domain, [int $expires, [string $path, [boolean
  42. $secure]]]);</code>
  43. </para>
  44. <itemizedlist>
  45. <listitem>
  46. <para>
  47. <varname>$name</varname>: Name des Cookies (notwendig)
  48. </para>
  49. </listitem>
  50. <listitem>
  51. <para>
  52. <varname>$value</varname>: Inhalt des Cookies (notwendig)
  53. </para>
  54. </listitem>
  55. <listitem>
  56. <para>
  57. <varname>$domain</varname>: Die Domain des Cookies (z.B.
  58. '.example.com') (notwendig)
  59. </para>
  60. </listitem>
  61. <listitem>
  62. <para>
  63. <varname>$expires</varname>: Ablaufzeit des Cookies als UNIX
  64. Zeitstempel (optional, standardmäßig <constant>FALSE</constant>).
  65. Ein Nichtsetzen führt zu einer Behandlung als 'Session-Cookie', das
  66. keine Ablaufzeit enthält.
  67. </para>
  68. </listitem>
  69. <listitem>
  70. <para>
  71. <varname>$path</varname>: Pfad des Cookies, z.B. '/foo/bar/'
  72. (optional, standardmäßig '/')
  73. </para>
  74. </listitem>
  75. <listitem>
  76. <para>
  77. <varname>$secure</varname>: Boolean, ob der Cookie nur über sichere
  78. Verbindungen (HTTPS) gesendet werden darf (optional, standardmäßig
  79. boolean <constant>FALSE</constant>)
  80. </para>
  81. </listitem>
  82. </itemizedlist>
  83. </listitem>
  84. <listitem>
  85. <para>
  86. Durch das Aufrufen der statischen fromString()-Methode mit einem
  87. Cookie-String, wie er unter 'Set-Cookie' in einer <acronym>HTTP</acronym>
  88. Antwort und 'Cookie' in einer <acronym>HTTP</acronym> Anfrage zu finden ist.
  89. In diesem Fall muss der Cookie-Inhalt bereits kodiert sein. Falls der
  90. Cookie-String keinen 'domain'-Teil enthält, muss man selbst einen Referenz
  91. <acronym>URI</acronym> angeben, aus dem die Domain und der Pfad des Cookies
  92. bestimmt wird.
  93. </para>
  94. </listitem>
  95. </itemizedlist>
  96. <example id="zend.http.cookies.cookie.instantiating.example-1">
  97. <title>Instanzieren eines Zend_Http_Cookie-Objekts</title>
  98. <programlisting language="php"><![CDATA[
  99. // Zuerst nutzen wir den Konstruktor. Der Cookie wird in zwei Stunden ablaufen
  100. $cookie = new Zend_Http_Cookie('foo',
  101. 'bar',
  102. '.example.com',
  103. time() + 7200,
  104. '/path');
  105. // Man kann auch den HTTP-Antwort 'Set-Cookie'-header dafür nutzen.
  106. // Dieser Cookie ist ähnlich zum vorangegangenen, allerdings wird
  107. // er nicht ablaufen und nur über sichere Verbindungen gesendet.
  108. $cookie = Zend_Http_Cookie::fromString('foo=bar; domain=.example.com; ' .
  109. 'path=/path; secure');
  110. // Wenn die Domain des Cookies nicht gesetzt ist, muss man ihn selbst angeben.
  111. $cookie = Zend_Http_Cookie::fromString('foo=bar; secure;',
  112. 'http://www.example.com/path');
  113. ]]></programlisting>
  114. </example>
  115. <note>
  116. <para>
  117. Beim Instanzieren eines Cookie Objekts mit der
  118. <classname>Zend_Http_Cookie</classname>::fromString()-Methode wird erwartet,
  119. dass der Cookie-Inhalt <acronym>URL</acronym> kodiert ist, wie es bei
  120. Cookie-Strings sein sollte. Allerdings wird angenommen, dass der Inhalt bei
  121. Verwendung des Konstruktors in seiner eigentlichen Form, d.h. nicht URL-kodiert,
  122. übergeben wird.
  123. </para>
  124. </note>
  125. </para>
  126. <para>
  127. Ein Cookie Objekt kann durch die magische __toString()-Methode zurück in einen String
  128. umgewandelt werden. Diese Methode erstellt einen HTTP-Anfrage "Cookie"-Header String,
  129. der den Namen sowie den Inhalt des Cookies enthält und durch ein Semikolon (';')
  130. abgeschlossen ist. Der Inhalt wird URL-kodiert, wie es für einen Cookie-Header
  131. vorgeschrieben ist:
  132. <example id="zend.http.cookies.cookie.instantiating.example-2">
  133. <title>Transformation eines Zend_Http_Cookie-Objekts zu einem String</title>
  134. <programlisting language="php"><![CDATA[
  135. // Erstellt einen neuen Cookie
  136. $cookie = new Zend_Http_Cookie('foo',
  137. 'two words',
  138. '.example.com',
  139. time() + 7200,
  140. '/path');
  141. // Gibt 'foo=two+words;' aus
  142. echo $cookie->__toString();
  143. // Bezweckt dasselbe
  144. echo (string) $cookie;
  145. // Ab PHP 5.2 funktioniert auch diese Variante
  146. echo $cookie;
  147. ]]></programlisting>
  148. </example>
  149. </para>
  150. </sect2>
  151. <sect2 id="zend.http.cookies.cookie.accessors">
  152. <title>Zend_Http_Cookie getter-Methoden</title>
  153. <para>
  154. Sobald ein <classname>Zend_Http_Cookie</classname> instanziert wurde, stellt es diverse
  155. getter-Methoden zur Verfügung, die es einem ermöglichen, auf die verschiedenen
  156. Eigenschaften des <acronym>HTTP</acronym> Cookies zuzugreifen:
  157. <itemizedlist>
  158. <listitem>
  159. <para>
  160. <code>string getName()</code>: Gibt den Namen des Cookies zurück
  161. </para>
  162. </listitem>
  163. <listitem>
  164. <para>
  165. <code>string getValue()</code>: Gibt den wirklichen, also nicht kodierten,
  166. Inhalt zurück
  167. </para>
  168. </listitem>
  169. <listitem>
  170. <para>
  171. <code>string getDomain()</code>: Gibt die Domain des Cookies zurück
  172. </para>
  173. </listitem>
  174. <listitem>
  175. <para>
  176. <code>string getPath()</code>: Gibt den Pfad des Cookies zurück; dessen
  177. Standardwert ist '/'
  178. </para>
  179. </listitem>
  180. <listitem>
  181. <para>
  182. <code>int getExpiryTime()</code>: Gibt die Ablaufzeit des Cookies als
  183. UNIX-Timestamp zurück. Falls der Cookie keine Ablaufzeit besitzt, wird
  184. <constant>NULL</constant> zurückgegeben.
  185. </para>
  186. </listitem>
  187. </itemizedlist>
  188. </para>
  189. <para>
  190. Zusätzlich gibt es einige boolesche tester-Methoden:
  191. <itemizedlist>
  192. <listitem>
  193. <para>
  194. <code>boolean isSecure()</code>: Gibt zurück, ob der Cookie nur über sichere
  195. Verbindungen gesendet werden kann. Wenn <constant>TRUE</constant>
  196. zurückgegeben wird, wird der Cookie also nur über <acronym>HTTPS</acronym>
  197. versendet.
  198. </para>
  199. </listitem>
  200. <listitem>
  201. <para>
  202. <code>boolean isExpired(int $time = null)</code>: Überprüft, ob der Cookie
  203. bereits abgelaufen ist. Wenn der Cookie keine Ablaufzeit besitzt, wird diese
  204. Methode immer <constant>FALSE</constant> zurückgegeben. Wenn $time übergeben
  205. wurde, wird der aktuelle Zeitstempel überschrieben und der übergebene
  206. Zeitstempel zur Überprüfung genutzt.
  207. </para>
  208. </listitem>
  209. <listitem>
  210. <para>
  211. <code>boolean isSessionCookie()</code>: Überprüft, ob der Cookie ein
  212. "Session-Cookie" ist, der keine Ablaufzeit besitzt und erst abläuft, wenn
  213. die Session beendet wird.
  214. </para>
  215. </listitem>
  216. </itemizedlist>
  217. </para>
  218. <para>
  219. <example id="zend.http.cookies.cookie.accessors.example-1">
  220. <title>Nutzen der getter-Methoden von Zend_Http_Cookie</title>
  221. <programlisting language="php"><![CDATA[
  222. // Zuerst wird der Cookie erstellt
  223. $cookie = Zend_Http_Cookie::fromString(
  224. 'foo=two+words; ' +
  225. 'domain=.example.com; ' +
  226. 'path=/somedir; ' +
  227. 'secure; ' +
  228. 'expires=Wednesday, 28-Feb-05 20:41:22 UTC');
  229. echo $cookie->getName(); // Gibt 'foo' aus
  230. echo $cookie->getValue(); // Gibt 'two words' aus
  231. echo $cookie->getDomain(); // Gibt '.example.com' aus
  232. echo $cookie->getPath(); // Gibt '/' aus
  233. echo date('Y-m-d', $cookie->getExpiryTime());
  234. // Gibt '2005-02-28' aus
  235. echo ($cookie->isExpired() ? 'Ja' : 'Nein');
  236. // Gibt 'Ja' aus
  237. echo ($cookie->isExpired(strtotime('2005-01-01') ? 'Ja' : 'Nein');
  238. // Gibt 'Nein' aus
  239. echo ($cookie->isSessionCookie() ? 'Ja' : 'Nein');
  240. // Gibt 'Nein' aus
  241. ]]></programlisting>
  242. </example>
  243. </para>
  244. </sect2>
  245. <sect2 id="zend.http.cookies.cookie.matching">
  246. <title>Zend_Http_Cookie: Überprüfen von Szenarien</title>
  247. <para>
  248. Die einzige wirkliche Logik in einem <classname>Zend_Http_Cookie</classname> Objekt
  249. befindet sich in der match()-Methode. Sie wird genutzt um zu Überprüfen, ob ein Cookie
  250. auf eine <acronym>HTTP</acronym> Anfrage zutrifft, um zu entscheiden, ob der Cookie in
  251. der Anfrage gesendet werden soll. Die Methode hat folgende Syntax und Parameter:
  252. <code>boolean Zend_Http_Cookie->match(mixed $uri, [boolean $matchSessionCookies,
  253. [int $now]]);</code>
  254. <itemizedlist>
  255. <listitem>
  256. <para>
  257. <code>mixed $uri</code>: Ein zu überprüfendes
  258. <classname>Zend_Uri_Http</classname> Objekt mit einer Domain und einem Pfad.
  259. Wahlweise kann stattdessen jedoch auch ein String, der einen validen
  260. <acronym>HTTP</acronym> <acronym>URL</acronym> darstellt, übergeben werden.
  261. Der Cookie ist zutreffend, wenn das <acronym>URL</acronym> Schema (HTTP oder
  262. <acronym>HTTPS</acronym>), die Domain sowie der Pfad passen.
  263. </para>
  264. </listitem>
  265. <listitem>
  266. <para>
  267. <code>boolean $matchSessionCookies</code>: Gibt an, ob Session-Cookies
  268. zutreffen sollen. Standardmäßig ist dieser Parameter
  269. <constant>TRUE</constant>. Wenn <constant>FALSE</constant> stattdessen
  270. übergeben wird, werden Cookies ohne Ablaufzeit nie zutreffen.
  271. </para>
  272. </listitem>
  273. <listitem>
  274. <para>
  275. <code>int $now</code>: Ablaufzeit (in Form eines UNIX-Zeitstempels) auf
  276. welche der Cookie überprüft wird. Wenn sie nicht angegeben wird, wird die
  277. gegenwärtige Zeit genutzt.
  278. </para>
  279. </listitem>
  280. </itemizedlist>
  281. <example id="zend.http.cookies.cookie.matching.example-1">
  282. <title>Zutreffen von Cookies</title>
  283. <programlisting language="php"><![CDATA[
  284. // Erstellen eines Cookie Objekts - zuerst ein sicherer Cookie ohne Ablaufzeit
  285. $cookie = Zend_Http_Cookie::fromString('foo=two+words; ' +
  286. 'domain=.example.com; ' +
  287. 'path=/somedir; ' +
  288. 'secure;');
  289. $cookie->match('https://www.example.com/somedir/foo.php');
  290. // Gibt true zurück
  291. $cookie->match('http://www.example.com/somedir/foo.php');
  292. // Gibt false zurück, da die Verbindung nicht sicher ist
  293. $cookie->match('https://otherexample.com/somedir/foo.php');
  294. // Gibt false zurück, da die Domain falsch ist
  295. $cookie->match('https://example.com/foo.php');
  296. // Gibt false zurück, da der Pfad falsch ist
  297. $cookie->match('https://www.example.com/somedir/foo.php', false);
  298. // Gibt false zurück, da keine Session-Cookies akzeptiert werden
  299. $cookie->match('https://sub.domain.example.com/somedir/otherdir/foo.php');
  300. // Gibt true zurück
  301. // Erstellen eines anderen Cookie-Objekts - diesmal unsicher und
  302. // einer Ablaufzeit die zwei Stunden in der Zukunft liegt
  303. $cookie = Zend_Http_Cookie::fromString('foo=two+words; ' +
  304. 'domain=www.example.com; ' +
  305. 'expires='
  306. . date(DATE_COOKIE, time() + 7200));
  307. $cookie->match('http://www.example.com/');
  308. // Gibt true zurück
  309. $cookie->match('https://www.example.com/');
  310. // Gibt true zurück, da unsichere Cookies genauso gut über sichere
  311. // Verbindungen übertragen werden können
  312. $cookie->match('http://subdomain.example.com/');
  313. // Gibt false zurück, da die Domain unzutreffend ist
  314. $cookie->match('http://www.example.com/', true, time() + (3 * 3600));
  315. // Gibt false zurück, da die Ablaufzeit drei Stunden in der Zukunft
  316. // liegt
  317. ]]></programlisting>
  318. </example>
  319. </para>
  320. </sect2>
  321. <sect2 id="zend.http.cookies.cookiejar">
  322. <title>Die Zend_Http_CookieJar Klasse: Instanzierung</title>
  323. <para>
  324. In den meisten Fällen ist es nicht notwendig, ein
  325. <classname>Zend_Http_CookieJar</classname> Objekt direkt zu erstellen. Wenn man ein
  326. neues CookieJar zum <classname>Zend_Http_Client</classname> Objekts hinzufügen will,
  327. muss man lediglich die Methode Zend_Http_Client->setCookieJar( aufrufen, die ein neues
  328. und leeres CookieJar zum Client hinzufügt. Später kann man dieses CookieJar via
  329. Zend_Http_Client->getCookieJar() holen.
  330. </para>
  331. <para>
  332. Wenn dennoch ein CookieJar Objekt manuell erstellen werden soll, kann man dies
  333. direkt durch "new Zend_Http_CookieJar()" erreichen - der Konstruktor benötigt
  334. keine Parameter. Ein anderer Weg zum Instanzieren eines CookieJar Objekts ist
  335. es, die statische Methode Zend_Http_CookieJar::fromResponse() zu nutzen. Diese
  336. Methode benötigt zwei Parameter: ein <classname>Zend_Http_Response</classname> Objekt
  337. und einen Referenz <acronym>URI</acronym>, entweder in Form eines Strings oder eines
  338. <classname>Zend_Uri_Http</classname> Objekts. Es wird ein
  339. <classname>Zend_Http_CookieJar</classname> Objekt zurückgegeben, das bereits die
  340. Cookies, die durch die <acronym>HTTP</acronym> Antwort gesetzt wurden, enthält. Der
  341. Referenz <acronym>URI</acronym> wird genutzt um die Domain und den Pfad des Cookies zu
  342. setzen, sofern sie nicht in den Set-Cookie-Headern definiert wurden.
  343. </para>
  344. </sect2>
  345. <sect2 id="zend.http.cookies.cookiejar.adding_cookies">
  346. <title>Hinzufügen von Cookies zu einem Zend_Http_CookieJar Objekt</title>
  347. <para>
  348. Normalerweise werden die, durch <acronym>HTTP</acronym> Antworten gesetzen, Cookies vom
  349. <classname>Zend_Http_Client</classname> Objekt automatisch zu dessen CookieJar
  350. hinzugefügt. Wenn man es wünscht, kann man Cookies auch manuell zum CookieJar
  351. hinzufügen, was durch Nutzen zweier Methoden erreicht werden kann:
  352. <itemizedlist>
  353. <listitem>
  354. <para>
  355. <classname>Zend_Http_CookieJar->addCookie($cookie[, $ref_uri])</classname>:
  356. Hinzufügen eines einzelnen Cookies zum CookieJar. $cookie kann entweder ein
  357. <classname>Zend_Http_Cookie</classname> Objekt oder ein String, der
  358. automatisch zu einem Cookie Objekt transformiert wird, sein. Wenn ein String
  359. übergeben wird, sollte man jedoch zusätzlich immer $ref_uri übergeben, da
  360. dieser einen Referenz <acronym>URI</acronym> darstellt - in Form eines
  361. Strings oder eines <classname>Zend_Uri_Http</classname> Objekts - dessen
  362. Werte als Standard für die Domain und den Pfad des Cookies genutzt werden.
  363. </para>
  364. </listitem>
  365. <listitem>
  366. <para>
  367. <classname>Zend_Http_CookieJar->addCookiesFromResponse($response,
  368. $ref_uri)</classname>: Fügt alle Cookies zum CookieJar hinzu, die in
  369. einer einzelnen <acronym>HTTP</acronym> Antwort gesetzt wurden. Es wird
  370. erwartet, dass $response ein <classname>Zend_Http_Response</classname>
  371. Objekt mit Set-Cookie-Headern ist. $ref_uri ist ein Anfrage
  372. <acronym>URI</acronym> in Form eines Strings oder eines
  373. <classname>Zend_Uri_Http</classname> Objekts dessen Inhalt die
  374. Standarddomain und den -pfad des Cookies bestimmt.
  375. </para>
  376. </listitem>
  377. </itemizedlist>
  378. </para>
  379. </sect2>
  380. <sect2 id="zend.http.cookies.cookiejar.getting_cookies">
  381. <title>Abrufen der Cookies von einem Zend_Http_CookieJar-Objekts</title>
  382. <para>
  383. Wie beim Hinzufügen von Cookies ist es normalerweise nicht notwendig,
  384. die Cookies manuell von einem CookieJar Objekt zu holen. Das
  385. <classname>Zend_Http_Client</classname> Objekt holt automatisch alle benötigten Cookies
  386. für eine <acronym>HTTP</acronym> Anfrage. Allerdings gibt es drei Methoden die Cookies
  387. aus einem CookieJar zu holen: <methodname>getCookie()</methodname>,
  388. <methodname>getAllCookies()</methodname>, und
  389. <methodname>getMatchingCookies()</methodname>. Zusätzlich erhält man alle
  390. <classname>Zend_Http_Cookie</classname> Objekte von CookieJar wenn man durch Ihn
  391. iteriert.
  392. </para>
  393. <para>
  394. Es ist wichtig anzumerken, dass jede dieser Methoden einen speziellen
  395. Parameter verlangt, der den Rückgabetyp der Methode festlegt. Dieser
  396. Parameter kann drei verschiedene Werte annehmen:
  397. <itemizedlist>
  398. <listitem>
  399. <para>
  400. <constant>Zend_Http_CookieJar::COOKIE_OBJECT</constant>: Gibt ein
  401. <classname>Zend_Http_Cookie</classname> Objekt zurück. Wenn diese Methode
  402. mehr als einen Cookie zurückgeben sollte, wird stattdessen ein Array aus
  403. Objekten zurückgegeben.
  404. </para>
  405. </listitem>
  406. <listitem>
  407. <para>
  408. <constant>Zend_Http_CookieJar::COOKIE_STRING_ARRAY</constant>: Gibt Cookies
  409. als Strings - im Format "foo=bar" - zurück, welche passend für das
  410. Senden im "Cookie"-Header einer <acronym>HTTP</acronym>Anfrage sind. Wenn mehr
  411. als ein Cookie zurückgegeben werden sollte, wird stattdessen ein Array
  412. solcher Strings zurückgegeben.
  413. </para>
  414. </listitem>
  415. <listitem>
  416. <para>
  417. <constant>Zend_Http_CookieJar::COOKIE_STRING_CONCAT</constant>: Ähnlich zu
  418. COOKIE_STRING_ARRAY; allerdings gibt diese Methode, falls mehr als
  419. ein Cookie zurückgegeben wird, einen einzelnen, langen String zurück,
  420. der die Cookies anhand eines Semikolons (;) trennt. Dieses Prozedere
  421. ist besonders hilfreich, wenn man alle zutreffenden Cookies in einem
  422. einzelnen "Cookie"-Header einer <acronym>HTTP</acronym> Anfrage zurückgeben
  423. will.
  424. </para>
  425. </listitem>
  426. </itemizedlist>
  427. </para>
  428. <para>
  429. Die Struktur der unterschiedlichen Cookie-Abrufmethoden wird unterhalb beschrieben:
  430. <itemizedlist>
  431. <listitem>
  432. <para>
  433. <classname>Zend_Http_CookieJar->getCookie($uri, $cookie_name[,
  434. $ret_as])</classname>: Gibt einen einzelnen Cookie von dem CookieJar zurück,
  435. dessen <acronym>URI</acronym> (Domain und Pfad) und Name zu den Parametern
  436. passen. $uri ist entweder ein String oder ein
  437. <classname>Zend_Http_Uri</classname> Objekt, die den <acronym>URI</acronym>
  438. darstellen. $cookie_name ist ein String zum Identifizieren des Cookie-Namens.
  439. $ret_as ist ein optionaler Parameter, der angibt, von welchem Typ der
  440. zurückgegebene Wert ist. Der Standardwert ist COOKIE_OBJECT.
  441. </para>
  442. </listitem>
  443. <listitem>
  444. <para>
  445. <classname>Zend_Http_CookieJar->getAllCookies($ret_as)</classname>: Holt alle
  446. Cookies aus dem CookieJar. $ret_as gibt den Rückgabetyp - wie oben bereits
  447. beschrieben - an. Wenn er nicht angegeben wird, nimmt er COOKIE_OBJECT an.
  448. </para>
  449. </listitem>
  450. <listitem>
  451. <para>
  452. <classname>Zend_Http_CookieJar->getMatchingCookies($uri[, $matchSessionCookies[,
  453. $ret_as[, $now]]])</classname>: Gibt alle Cookies vom CookieJar zurück, die
  454. mit der Ablaufzeit und dem <acronym>URI</acronym> übereinstimmen.
  455. <itemizedlist>
  456. <listitem>
  457. <para>
  458. <varname>$uri</varname> ist entweder ein
  459. <classname>Zend_Uri_Http</classname> Objekt oder ein String, der den
  460. Verbindungstyp (sicher oder unsicher), die Domain und den Pfad angibt.
  461. Nach diesen Informationen wird im CookieJar gesucht.
  462. </para>
  463. </listitem>
  464. <listitem>
  465. <para>
  466. <varname>$matchSessionCookies</varname> ist ein boolescher Ausdruck, der
  467. festlegt, ob nach Session-Cookies gesucht werden soll. Session-Cookies
  468. sind Cookies, die keine Ablaufzeit enthalten. Standardmäßig ist dieser
  469. Wert <constant>TRUE</constant>.
  470. </para>
  471. </listitem>
  472. <listitem>
  473. <para>
  474. <varname>$ret_as</varname> gibt den Rückgabetyp - wie oben beschrieben
  475. - an. Wenn keiner angegeben wird, wird COOKIE_OBJECT angenommen.
  476. </para>
  477. </listitem>
  478. <listitem>
  479. <para>
  480. <varname>$now</varname> ist ein Integer der einen UNIX-Zeitstempel
  481. darstellt. Cookies, die vor der angegeben Zeit ablaufen, werden nicht
  482. zurückgegeben. Wenn dieser Parameter nicht angegeben wird, wird
  483. stattdessen die aktuelle Zeit gewählt.
  484. </para>
  485. </listitem>
  486. </itemizedlist>
  487. Mehr über das Zutreffen von Cookies gibt es hier:
  488. <xref linkend="zend.http.cookies.cookie.matching" />.
  489. </para>
  490. </listitem>
  491. </itemizedlist>
  492. </para>
  493. </sect2>
  494. </sect1>