cvs: phpdoc-cs /reference/network/functions header.xml headers-sent.xml setcookie.xml
[email protected] ("Jakub Vrana") Tue, 27 Nov 2007 11:11:10 -0000
| Newsgroups | php.doc.cs |
|---|---|
| Message-ID | <cvsvrana1196161870@cvsserver> |
--vrana1196161870
Content-Type: text/plain
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/
--vrana1196161870
Content-Type: text/plain
Content-Disposition: attachment; filename="vrana-20071127111110.txt"
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 "Location". 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
"HTTP/" (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><html></literal> a <literal><head></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>""</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<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
-->
--vrana1196161870--