Zend_Http_Cookie-Handling.xml 29 KB

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