Zend_Http_Cookie-Handling.xml 27 KB

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