cvs: phpdoc-cs /reference/network/functions header.xml headers-sent.xml setcookie.xml

From: Date: Tue, 27 Nov 2007 11:11:10 +0000
Subject: cvs: phpdoc-cs /reference/network/functions header.xml headers-sent.xml setcookie.xml
Groups: php.doc.cs 
Request: Send a blank email to doc-cs+get-243@lists.php.net to get a copy of this message
vrana Tue Nov 27 11:11:10 2007 UTC Added files: /phpdoc-cs/reference/network/functions header.xml headers-sent.xml setcookie.xml Log: Move functions from http/

http://cvs.php.net/viewvc.cgi/phpdoc-cs/reference/network/functions/header.xml?view=markup&rev=1.1 Index: phpdoc-cs/reference/network/functions/header.xml +++ phpdoc-cs/reference/network/functions/header.xml <?xml version="1.0" encoding="iso-8859-2"?> <!-- splitted from ./cs/functions/http.xml, last change in rev 1.1 --> <!-- last change to 'header' in en/ tree in rev 1.2 --> <refentry xml:id="function.header" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <refnamediv> <refname>header</refname> <refpurpose>Poslat HTTP hlavièku</refpurpose> </refnamediv> <refsect1> <title>Popis</title> <methodsynopsis> <type>int</type><methodname>header</methodname> <methodparam><type>string</type><parameter>string</parameter></methodparam> <methodparam choice="opt"><type>bool</type><parameter>replace</parameter></methodparam> <methodparam choice="opt"><type>int</type><parameter>http_response_code</parameter></methodparam> </methodsynopsis> <para> Funkce <function>header</function> se pou¾ívá na zaèátku HTML souboru k odeslání HTTP hlavièek. Více informací o HTTP hlavièkách viz <link xlink:href="&spec.http1.1;">Specifikace HTTP 1.1</link>. <emphasis>Poznámka:</emphasis> Pamatujte, ¾e funkce <function>header</function> musí být volána døíve ne¾ se ode¹le jakýkoliv normální výstup, a» u¾ normálními HTML tagy, nebo z PHP. Velmi obvyklou chybou je naèítat kód pomocí <function>include</function> nebo auto_prepend a mít v tomto kódu prázdné øádky, které zpùsobí odeslání výstupu pøed voláním funkce <function>header</function>. </para> <para> Existují dva zvlá¹tní pøípady volání funkce <function>header</function>. Prvním je hlavièka &quot;Location&quot;. Ta nejen¾e ode¹le hlavièku browseru, ale navíc i vrátí Apachi stavový kód REDIRECT. Z pohledu autora skriptu by to nemìlo být dùle¾ité, ale je to dùle¾ité pro lidi, kteøí rozumí vnitønostem Apache. <informalexample> <programlisting role="php"> header ("Location: http://www.php.net"); /* Pøesmìrujeme browser na web site PHP */ exit; /* Pojistíme si, ¾e se dal¹í kód nevykoná po pøesmìrování. */ </programlisting> </informalexample> </para> <para> Druhým zvlá¹tním pøípadem jsou v¹echny hlavièky zaèínající øetìzcem &quot;HTTP/&quot; (velikost písmen nehraje roli). Napøíklad, pokud direktiva ErrorDocument 404 va¹eho Apache ukazuje na PHP skript, nebylo by od vìci, kdyby skuteènì generoval 404. První vìcí, kterou byste v tomto skriptu mìli udìlat tudíz bude: <informalexample> <programlisting role="php"> header ("HTTP/1.0 404 Not Found"); </programlisting> </informalexample> </para> <para> PHP skripty èasto generují dynamické HTML, které nesmí být cachováno u¾ivatelským browserem, ani ¾ýdnými proxynami mezi serverem a u¾ivatelským browserem. Mnoho proxyn a klientù se dá donutit k vypnutí cachování s pomocí <informalexample> <programlisting role="php"> header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // datum v minulosti header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // v¾dy upraven header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header ("Pragma: no-cache"); // HTTP/1.0 </programlisting> </informalexample> </para> <para> Viz také <function>headers_sent</function> </para> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> http://cvs.php.net/viewvc.cgi/phpdoc-cs/reference/network/functions/headers-sent.xml?view=markup&rev=1.1 Index: phpdoc-cs/reference/network/functions/headers-sent.xml +++ phpdoc-cs/reference/network/functions/headers-sent.xml <?xml version="1.0" encoding="iso-8859-2"?> <!-- splitted from ./cs/functions/http.xml, last change in rev 1.1 --> <!-- last change to 'headers-sent' in en/ tree in rev 1.7 --> <refentry xml:id="function.headers-sent" xmlns="http://docbook.org/ns/docbook"> <refnamediv> <refname>headers_sent</refname> <refpurpose>Vrátit &true;, pokud byly odeslány hlavièky</refpurpose> </refnamediv> <refsect1> <title>Popis</title> <methodsynopsis> <type>boolean</type><methodname>headers_sent</methodname> <methodparam><parameter>void</parameter></methodparam> </methodsynopsis> <para> Tato funkce vrátí &true;, pokud u¾ byly HTTP hlavièky odeslány, jinak &false;. </para> <para> Viz také <function>header</function> </para> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> http://cvs.php.net/viewvc.cgi/phpdoc-cs/reference/network/functions/setcookie.xml?view=markup&rev=1.1 Index: phpdoc-cs/reference/network/functions/setcookie.xml +++ phpdoc-cs/reference/network/functions/setcookie.xml <?xml version="1.0" encoding="iso-8859-2"?> <!-- splitted from ./cs/functions/http.xml, last change in rev 1.1 --> <!-- last change to 'setcookie' in en/ tree in rev 1.2 --> <refentry xml:id="function.setcookie" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <refnamediv> <refname>setcookie</refname> <refpurpose>Poslat cookie</refpurpose> </refnamediv> <refsect1> <title>Popis</title> <methodsynopsis> <type>bool</type><methodname>setcookie</methodname> <methodparam><type>string</type><parameter>name</parameter></methodparam> <methodparam choice="opt"><type>string</type><parameter>value</parameter></methodparam> <methodparam choice="opt"><type>int</type><parameter>expire</parameter></methodparam> <methodparam choice="opt"><type>string</type><parameter>path</parameter></methodparam> <methodparam choice="opt"><type>string</type><parameter>domain</parameter></methodparam> <methodparam choice="opt"><type>int</type><parameter>secure</parameter></methodparam> </methodsynopsis> <para> <function>setcookie</function> definuje cookie, která se po¹le spolu s ostatními HTTP hlavièkami. Podobnì jako ostatní hlavièky, cookies se musí odeslat <emphasis>pøed</emphasis> jakýmkoliv výstupem va¹eho skriptu (jedná se o omezení protokolu). Je tedy tøeba, abyste v¹echna volání této funkce umístili pøed jakýkoliv výstup, vèetnì znaèek <literal>&lt;html&gt;</literal> a <literal>&lt;head&gt;</literal> a také pøed jakékoliv bílé znaky. Kdy¾ je pøi volání této funkce u¾ nìco na výstupu, <function>setcookie</function> neuspìje a vrátí &false;. Kdy¾ <function>setcookie</function> probìhne v poøádku, vrátí &true;. To v¹ak neøíká nic o tom, zda byla cookie pøijata klientem. </para> <note> <para> V PHP 4 lze k poslání výstupu pøed voláním této funkce pou¾ít <link linkend="ref.outcontrol">output buffering</link>, ov¹em s tou re¾ií, ¾e v¹echen výstup pro prohlí¾eè bude pozdr¾en na serveru, dokud ho nepo¹lete. Lze to zaøídit voláním funkcí <function>ob_start</function> a <function>ob_end_flush</function> nebo nastavením konfiguraèní direktivy <literal>output_buffering</literal> v &php.ini; nebo konfiguraèních souborech serveru. </para> </note> <para> V¹echny argumenty kromì argumentu <parameter>name</parameter> jsou nepovinné. Pokud je pøítomný pouze argument <parameter>name</parameter>, u klienta se sma¾e cookie tohoto jména. Kterýkoliv argument mù¾ete také nahradit prázdným øetìzcem (<emphasis>&quot;&quot;</emphasis>), èím¾ tento argument pøeskoèíte. Argumenty <parameter>expire</parameter> a <parameter>secure</parameter> jsou celoèíselné a nedají se pøeskoèit prázdným øetìzcem. Místo toho pou¾ijte nulu (<emphasis>0</emphasis>). Argument <parameter>expire</parameter> je bì¾né Unixové celoèíselné vyjádøení èasu, jak je vrací funkce <function>time</function> èi <function>mktime</function>. Argument <parameter>secure</parameter> indikuje, ¾e by se tato cookie mìla pøená¹et pouze po zabezpeèeném HTTPS spojení. </para> <para> Bì¾né zádrhele: <itemizedlist> <listitem> <simpara> Cookies jsou pøístupné a¾ pøi dal¹ím naètení stránky, na které pøístupné být mají. </simpara> </listitem> <listitem> <simpara> Cookies se musí mazat se stejnými parametry, se kterými byly odeslány. </simpara> </listitem> </itemizedlist> </para> <simpara> V PHP 3 se vícenásobná volání <function>setcookie</function> v jednom skriptu provedou v opaèném poøadí. Pokud se pokou¹íte smazat jeden cookie pøe odesláním jiného, mìli byste umístit vlo¾ení pøed smazání. V PHP 4 se vícenásobná volání <function>setcookie</function> provedou v tom poøadí, jak jsou volána. </simpara> <para> Nìkolik pøíkladù, jak posílat cookies: <example> <title>Ukázky odeslání cookies pomocí <function>setcookie</function></title> <programlisting role="php"> setcookie ("TestCookie", "Zku¹ební hodnota"); setcookie ("TestCookie", $value,time()+3600); /* vypr¹í za hodinu */ setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1); </programlisting> </example> </para> <para> Následují pøíklady mazání cookies z pøedchozí ukázky: <example> <title>Ukázky mazání cookies pomocí <function>setcookie</function></title> <programlisting role="php"> setcookie ("TestCookie"); // nastaví dobu vypr¹ení na èas pøed hodinou setcookie ("TestCookie", "", time() - 3600); setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1); </programlisting> </example> Pøi mazání cookie byste se mìli ujistit, ¾e je doba vypr¹ení v minulosti, èím¾ se v browseru zapne mechanismus odstranìní cookie. </para> <para> V¹imnìte si, ¾e hodnotová èást cookie se pøi odeslání cookie automaticky url-zakóduje, a pøi pøijetí se automaticky dekóduje a pøiøadí promìnné stejného jména, jako je jméno cookie. Pokud chcete vidìt obsah na¹eho zku¹ebního cookie, pou¾ijte nìkterý z následujících pøíkladù: <informalexample> <programlisting role="php"> echo $TestCookie; echo $HTTP_COOKIE_VARS["TestCookie"]; </programlisting> </informalexample> </para> <para> Cookies obsahující pole mù¾ete také odeslat tak, ¾e za název cookie napí¹ete hranaté závorky. Úèinkem tohoto je odeslání tolika cookies, kolik má va¹e pole prvkù, ale kdy¾ vá¹ skript tyto cookies pøijme, hodnoty se umístí v poli stejného jména, jako jsou va¹e cookies: <informalexample> <programlisting role="php"> setcookie ("cookie[three]", "cookiethree"); setcookie ("cookie[two]", "cookietwo"); setcookie ("cookie[one]", "cookieone"); if (isset ($cookie)) { while (list ($name, $value) = each ($cookie)) { echo "$name == $value&lt;br>\n"; } } </programlisting> </informalexample> </para> <para> Více informací o cookies viz specifikace cookies na <link xlink:href="&spec.cookies;">&spec.cookies;</link>. </para> <simpara> Microsoft Internet Explorer 4 se Service Packem 1 zpracovává chybnì cookies, které mají nastavený argument <parameter>path</parameter>. </simpara> <simpara> Netscape Communicator 4.05 a Microsoft Internet Explorer 3.x zøejmì nezpracují cookies správnì, pokud nejsou nastaveny argumenty <parameter>path</parameter> a <parameter>time</parameter>. </simpara> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->
« previous php.doc.cs (#243) next »