1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254
|
<?xml version="1.0" encoding="iso-8859-2"?>
<reference id="ref.http">
<title>HTTP funkce</title>
<titleabbrev>HTTP</titleabbrev>
<partintro>
<simpara>
Tyto funkce vm umouj manipulovat vstupem poslanm zpt browseru
pmo na rovni HTTP protokolu.
</simpara>
</partintro>
<refentry id="function.header">
<refnamediv>
<refname>header</refname>
<refpurpose>Poslat HTTP hlaviku</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<methodsynopsis>
<type>int</type><methodname>header</methodname>
<methodparam><type>string</type><parameter>string</parameter></methodparam>
</methodsynopsis>
<para>
Funkce <function>header</function> se pouv na zatku HTML souboru
k odesln HTTP hlaviek. Vce informac o HTTP hlavikch viz <ulink
url="&spec.http1.1;">Specifikace HTTP 1.1</ulink>.
<emphasis>Poznmka:</emphasis> Pamatujte, e funkce
<function>header</function> mus bt volna dve ne se odele jakkoliv
normln vstup, a u normlnmi HTML tagy, nebo z PHP. Velmi obvyklou
chybou je natat kd pomoc <function>include</function> nebo
auto_prepend a mt v tomto kdu przdn dky, kter zpsob odesln
vstupu ped volnm funkce <function>header</function>.
</para>
<para>
Existuj dva zvltn ppady voln funkce <function>header</function>.
Prvnm je hlavika "Location". Ta nejene odele hlaviku
browseru, ale navc i vrt Apachi stavov kd REDIRECT. Z pohledu autora
skriptu by to nemlo bt dleit, ale je to dleit pro lidi, kte
rozum vnitnostem Apache.
<informalexample>
<programlisting role="php">
header ("Location: http://www.php.net"); /* Pesmrujeme browser
na web site PHP */
exit; /* Pojistme si, e se dal kd nevykon po
pesmrovn. */
</programlisting>
</informalexample>
</para>
<para>
Druhm zvltnm ppadem jsou vechny hlaviky zanajc etzcem
"HTTP/" (velikost psmen nehraje roli). Napklad, pokud
direktiva ErrorDocument 404 vaeho Apache ukazuje na PHP skript, nebylo
by od vci, kdyby skuten generoval 404. Prvn vc, kterou byste v tomto
skriptu mli udlat tudz bude:
<informalexample>
<programlisting role="php">
header ("HTTP/1.0 404 Not Found");
</programlisting>
</informalexample>
</para>
<para>
PHP skripty asto generuj dynamick HTML, kter nesm bt cachovno
uivatelskm browserem, ani dnmi proxynami mezi serverem a uivatelskm
browserem. Mnoho proxyn a klient se d donutit k vypnut cachovn 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");
// vdy 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>
<refentry id="function.headers-sent">
<refnamediv>
<refname>headers_sent</refname>
<refpurpose>Vrtit &true;, pokud byly odeslny hlaviky</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<methodsynopsis>
<type>boolean</type><methodname>headers_sent</methodname>
<methodparam><parameter>void</parameter></methodparam>
</methodsynopsis>
<para>
Tato funkce vrt &true;, pokud u byly HTTP hlaviky
odeslny, jinak &false;.
</para>
<para>
Viz tak <function>header</function>
</para>
</refsect1>
</refentry>
<refentry id="function.setcookie">
<refnamediv>
<refname>setcookie</refname>
<refpurpose>Poslat cookie</refpurpose>
</refnamediv>
<refsect1>
<title>Popis</title>
<methodsynopsis>
<type>int</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 pole
spolu s hlavikami. Cookies se mus odeslat jako
<emphasis>prvn</emphasis> ze vech HTTP hlaviek (to je omezen
cookies, ne PHP). Voln tto funkce muste tud umstit ped
<literal><html></literal> i <literal><head></literal> tagy.
</para>
<para>
Vechny argumenty krom argumentu <parameter>name</parameter> jsou
nepovinn. Pokud je ptomn pouze argument
<parameter>name</parameter>, u klienta se smae cookie tohoto jmna.
Kterkoliv argument mete tak nahradit przdnm etzcem
(<emphasis>""</emphasis>), m tento argument peskote.
Argumenty <parameter>expire</parameter> a <parameter>secure</parameter>
jsou celoseln a nedaj se peskoit przdnm etzcem. Msto toho
pouijte nulu (<emphasis>0</emphasis>). Argument
<parameter>expire</parameter> je bn Unixov celoseln vyjden
asu, jak je vrac funkce <function>time</function> i
<function>mktime</function>. Argument <parameter>secure</parameter>
indikuje, e by se tento cookie ml penet pouze po zabezpeenm
HTTPS spojen.
</para>
<para>
Bn zdrhele:
<itemizedlist>
<listitem>
<simpara>
Cookies jsou pstupn a pi dalm naten strnky, na kter pstupn
bt maj.
</simpara>
</listitem>
<listitem>
<simpara>
Cookies se mus mazat se stejnmi parametry, se ktermi byly odeslny.
</simpara>
</listitem>
</itemizedlist>
</para>
<simpara>
V PHP 3 se vcensobn voln <function>setcookie</function> v jednom
skriptu provedou v opanm poad. Pokud se pokoute smazat jeden
cookie pe odeslnm jinho, mli byste umstit vloen ped smazn.
V PHP 4 se vcensobn voln <function>setcookie</function> provedou
v tom poad, jak jsou volna.
</simpara>
<para>
Nkolik pklad, jak poslat cookies:
<example>
<title>Ukzky odesln cookies pomoc <function>setcookie</function></title>
<programlisting role="php">
setcookie ("TestCookie", "Zkuebn hodnota");
setcookie ("TestCookie", $value,time()+3600); /* vypr za hodinu */
setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1);
</programlisting>
</example>
</para>
<para>
Nsleduj pklady mazn cookies z pedchoz ukzky:
<example>
<title>Ukzky mazn cookies pomoc <function>setcookie</function></title>
<programlisting role="php">
setcookie ("TestCookie");
// nastav dobu vypren na as ped hodinou
setcookie ("TestCookie", "", time() - 3600);
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);
</programlisting>
</example>
Pi mazn cookie byste se mli ujistit, e je doba vypren v minulosti,
m se v browseru zapne mechanismus odstrann cookie.
</para>
<para>
Vimnte si, e hodnotov st cookie se pi odesln cookie automaticky
url-zakduje, a pi pijet se automaticky dekduje a piad promnn
stejnho jmna, jako je jmno cookie. Pokud chcete vidt obsah naeho
zkuebnho cookie, pouijte nkter z nsledujcch pklad:
<informalexample>
<programlisting role="php">
echo $TestCookie;
echo $HTTP_COOKIE_VARS["TestCookie"];
</programlisting>
</informalexample>
</para>
<para>
Cookies obsahujc pole mete tak odeslat tak, e za nzev cookie napete
hranat zvorky. inkem tohoto je odesln tolika cookies, kolik m vae
pole prvk, ale kdy v skript tyto cookies pijme, hodnoty se umst
v poli stejnho jmna, jako jsou vae 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>
Vce informac o cookies viz specifikace cookies na <ulink
url="&spec.cookies;">&spec.cookies;</ulink>.
</para>
<simpara>
Microsoft Internet Explorer 4 se Service Packem 1 zpracovv chybn
cookies, kter maj nastaven argument <parameter>path</parameter>.
</simpara>
<simpara>
Netscape Communicator 4.05 a Microsoft Internet Explorer 3.x zejm
nezpracuj cookies sprvn, pokud nejsou nastaveny argumenty
<parameter>path</parameter> a <parameter>time</parameter>.
</simpara>
</refsect1>
</refentry>
</reference>
<!-- 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:
-->
|