File: http.xml

package info (click to toggle)
phpdoc 20020310-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 35,272 kB
  • ctags: 354
  • sloc: xml: 799,767; php: 1,395; cpp: 500; makefile: 200; sh: 140; awk: 51
file content (281 lines) | stat: -rw-r--r-- 11,202 bytes parent folder | download
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
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
<?xml version="1.0" encoding="iso-8859-1"?>
 <reference id="ref.http">
  <title>HTTP-Funktionen</title>
  <titleabbrev>HTTP</titleabbrev>
  <!-- Anmerkung des bersetzers:
       entspricht en/functions/http.xml 1.13 -->

  <partintro>
   <simpara>
    Diese Funktionen ermglichen die Manipulation der an den Browser
    geschickten Informationen bis hinunter auf HTTP-Protokoll-Ebene.
   </simpara>
  </partintro>

  <refentry id="function.header">
   <refnamediv>
    <refname>header</refname>
    <refpurpose>Sendet einen HTTP-Header</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung:</title>
     <methodsynopsis>
      <type>int</type><methodname>header</methodname>
      <methodparam><type>string</type><parameter>string</parameter></methodparam>
     </methodsynopsis>
    <para>
     Die <function>header</function>-Funktion wird zu Beginn einer
     <acronym>HTML</acronym>-Datei benutzt um
     <acronym>HTTP</acronym>-Anfangsinformationen zu senden. Siehe
     <ulink url="&spec.http1.1;">HTTP 1.1 Spezifikationen</ulink> fr
     weitere Informationen.  <emphasis>Hinweis:</emphasis> Beachten
     sie, dass die <function>header</function>-Funktion aufgerufen
     werden muss, bevor irgendeine Ausgabe durch normale HTML-Tags
     oder PHP erzeugt wird.  Es ist ein hufig anzutreffender Fehler,
     per <function>include</function> Programm-Code einzubinden (bzw.
     per auto_prepend) oder Leerzeichen oder -zeilen vor dem Code
     stehen zu haben, die bereits Ausgaben bewirken (auch wenn diese
     leer sind) bevor <function>header</function> aufgerufen wird.
    </para>
    <para>
     Es gibt zwei Spezialflle von Header-Aufrufen. Der Erste ist der
     &quot;Location&quot;-Header. Es wird nicht nur der Header an den 
     Browser geschickt, der Apache erhlt auch noch den Status-Code
     REDIRECT. Aus Sicht des Skript-Schreibers ist das nicht wichtig,
     aber fr alle, die die Internas von Apache verstehen wollen, ist
     dies von Belang.
     <informalexample>
      <programlisting role="php">
header ("Location: http://www.php.net");  /* Umleitung des Browsers
                                             zur PHP-Web-Seite. */
exit;  /* Sicher stellen, das nicht trotz Umleitung nachfolgender
          Code ausgefhrt wird. */
      </programlisting>
     </informalexample>
    </para>
    <para>
     Der zweite Spezialfall ist ein Header der mit der Zeichenfolge
     &quot;HTTP/&quot; beginnt (Gro-/Kleinschreibung ist egal). Falls
     sie z.B. die Dokument-Fehler-Anweisung 404 des Apache auf ein
     PHP-Skript zeigen lassen, ist es gut, wenn dieses Skript einen
     404-Fehler erzeugt. In diesem Skript sollten sie also zuerst
     stehen haben:
     <informalexample>
      <programlisting role="php">
header ("HTTP/1.0 404 Not Found");
      </programlisting>
     </informalexample>
    </para>
    <para>
     PHP-Skripte erzeugen oft dynamisches HTML, das weder vom Browser noch
     von irgendeinem Proxy zwischen Web-Server und Client-Browser gepuffert
     ("gecached") werden soll bzw. darf. Bei vielen Proxies und Browsern
     kann das Cachen unterbunden werden und zwar mit:
     <informalexample>
      <programlisting role="php">
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Datum der
Vergangenheit
header ("Last-Modified: " . gmdate ("D, d M Y H:i:s") . " GMT"); 
                                                      // immer gendert
header ("Cache-Control: no-cache, must-revalidate");  // HTTP/1.1
header ("Pragma: no-cache");                          // HTTP/1.0
      </programlisting>
     </informalexample>
    </para>
    <para>
     Siehe auch: <function>headers_sent</function>.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.headers-sent">
   <refnamediv>
    <refname>headers_sent</refname>
    <refpurpose>
     Gibt &true; zurck, wenn die Header schon gesendet sind
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung:</title>
     <methodsynopsis>
      <type>boolean</type><methodname>headers_sent</methodname>
      <methodparam><parameter>void</parameter></methodparam>
     </methodsynopsis>
    <para>
     Diese Funktion gibt &true; zurck, wenn die HTTP-Header bereits
     abgeschickt worden sind, ansonsten wird &false; zurck gegeben.
    </para>
    <para>
	   Siehe auch: <function>header</function>.
  	</para>
   </refsect1>
  </refentry>

  <refentry id="function.setcookie">
   <refnamediv>
    <refname>setcookie</refname>
    <refpurpose>Sendet ein Cookie</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Beschreibung:</title>
     <methodsynopsis>
      <type>int</type><methodname>setcookie</methodname>
      <methodparam><type>string</type><parameter>name</parameter></methodparam>
      <methodparam><type>string</type><parameter>value</parameter></methodparam>
      <methodparam><type>int</type><parameter>expire</parameter></methodparam>
      <methodparam><type>string</type><parameter>path</parameter></methodparam>
      <methodparam><type>string</type><parameter>domain</parameter></methodparam>
      <methodparam><type>int</type><parameter>secure</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> definiert ein mit den
     Header-Informationen zu bertragendes Cookie. Cookies mssen
     <emphasis>vor</emphasis> irgendwelchen anderen Headern gesendet
     werden (dies ist eine Einschrnkung der Cookies, nicht von PHP).
     Sie mssen deshalb solche Funktionsaufrufe vor irgendwelchen
     <literal>&lt;html></literal>- oder
     <literal>&lt;head></literal>-Tags im Skript einsetzen.
    </para>
    <para>
     Alle Argumente - ausser <parameter>name</parameter> - sind
     optional. Ist nur der Name angegeben wird das Cookie mit diesem
     Namen auf dem Client gelscht. Sie knnen beliebige Argumente
     auch durch einen Leerstring (<emphasis>&quot;&quot;</emphasis>)
     ersetzen, um diese Argumente zu bergehen.
     Der <parameter>expire</parameter>-Parameter und das
     <parameter>secure</parameter>-Argument sind Integer-Werte und
     knnen nicht mit einem Leerstring bersprungen werden. Setzen
     sie statt dessen &null; (<emphasis>0</emphasis>). Der
     <parameter>expire</parameter>-Parameter ist ein normaler
     UNIX-Zeitwert als Integer-Zahl, wie er von der
     <function>time</function> oder
     <function>mktime</function>-Funktion zurck gegeben wird. Das
     <parameter>secure</parameter>-Argument bedeutet, dass das Cookie
     nur ber eine sichere HTTP-Verbindung geschickt werden soll.
    </para>
    <para>  
     Anwendungsbereiche:
    </para>
    <itemizedlist>
     <listitem>
      <simpara>
       Cookies werden nicht sichtbar, bevor nicht eine Seite geladen
       wird, in der das Cookie sichtbar sein soll.  
      </simpara>
     </listitem> 
     <listitem>
      <simpara>
       Cookies mssen mit den selben Parametern gelscht werden, mit
       denen sie gesetzt wurden.
      </simpara>
     </listitem>
    </itemizedlist>
    <simpara>
     In PHP3 werden mehrfache Aufrufe von <function>setcookie</function>
     im selben Skript in umgekehrter Reihenfolge abgearbeitet. Sollten
     sie also ein Cookie lschen wollen bevor sie ein anderes setzen,
     sollten sie das Setzen vor dem Lschen vornehmen. In PHP4 werden
     mehrfache Aufrufe von <function>setcookie</function> in der 
     Reihenfolge ihres Aufrufs behandelt.
    </simpara>
    <para>
     Einige Beispiele, wie Cookies gesetzt / gesendet werden:
     <example>
      <title><function>setcookie</function>-Beispiele:</title>
      <programlisting role="php">
setcookie ("TestCookie", "Test Value");
setcookie ("TestCookie", $value, time()+3600);  /* verfllt in 1 Stunde */
setcookie ("TestCookie", $value, time()+3600, "/~rasmus/", ".utoronto.ca",1);
      </programlisting>
     </example>
    </para>
    <para>
     Beispiele, wie die vorhergehenden Cookies wieder gelscht werden:
     <example>
      <title><function>setcookie</function>-Beispiele:</title>
      <programlisting role="php">
setcookie ("TestCookie");
// Setzen des Ablauf-Zeitpunktes auf 1 Stunde vorher
setcookie ("TestCookie", "", time() - 3600);
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca",1);
      </programlisting>
     </example>
     Beim Lschen eines Cookies sollten sie sicher stellen, dass die
     Verfallszeit in der Vergangenheit liegt, damit ihr Browser
     &quot;zufrieden&quot; ist.
    </para>
    <para>
     Beachten sie, dass der Wertebereich des Cookies automatisch
     URL-konform codiert (urlencoded) wird, sobald sie das Cookie
     senden, und wenn es gelesen wird, wird es automatisch URL-konform
     decodiert und einer Variablen zugewiesen, die den selben Namen
     wie das Cookie trgt. Um die Inhalte unserer Test-Cookies zu
     sehen, brauchen sie nur eines der folgenden Beispiel zu benutzen:
     <informalexample>
      <programlisting role="php">
echo $TestCookie;
echo $HTTP_COOKIE_VARS["TestCookie"];
      </programlisting>
     </informalexample>
    </para>
    <para>
     Sie knnen auch ein Array an Cookies setzen, in dem sie die
     Array-Schreibweise benutzen. Dadurch werden so viele Cookies
     gesetzt, wie ihr Array Elemente hat. Sobald das Cookie aber von
     ihrem Skript gelesen wird, werden alle Werte in ein einziges
     Array mit dem Cookie-Namen eingelesen: 
     <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>
     Weitere Informationen zu Cookies und deren Spezifikationen
     erhalten sie bei Netscape unter <ulink
     url="&spec.cookies;">&spec.cookies;</ulink>.
    </para>
    <simpara>
     Microsofts Internet-Explorer 4 mit Servive-Pack 1 geht nicht
     korrekt mit Cookies um, die den Pfad-Parameter beinhalten.
    </simpara>
    <simpara>
     Netscape Communicator 4.05 und Microsoft Internet Explorer 3.x
     scheinen mit Cookies Probleme zu haben, wenn die Argumente fr
     Pfad und Zeit nicht angegeben sind.
    </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:
-->