Zend_Http_Cookie-Handling.xml 29 KB

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