LMPX.COM |
Home | Linux | Mysql | PHP | XML | ||
|
|
|||
From: Jakub Vrana Date: Tue Nov 27 04:11:10 2007 Subject: cvs: phpdoc-cs /reference/network/functions header.xml headers-sent.xml setcookie.xml
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 "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
-->
| Navigate in group php.doc.cs at sever news.php.net | |
| Previous | Next |
| Š No Copyright You are free to use Anything |
Site Maintained by PHP Developer
Powered By PHP Consultants |