Variablen aus externen Quellen
HTTP-Cookies
PHP unterstützt HTTP-Cookies auf völlig transparente Weise, wie in
» RFC 6265 definiert. Cookies sind
ein Mechanismus zur Speicherung von Daten auf dem Client-Rechner, um
damit wiederkehrende Benutzer nachzuverfolgen oder zu identifizieren. Sie
können Cookies erzeugen, indem Sie die Funktion
setcookie() verwenden. Cookies sind Teil des
HTTP-Headers, deshalb muss die Funktion setcookie()
aufgerufen werden, bevor irgendeine Ausgabe an den Browser gesendet wird.
Dabei handelt es sich um die gleiche Einschränkung, die auch für die
Funktion header() gilt. Cookie-Daten stehen dann in
den entsprechenden Cookie-Daten-Arrays, wie zum Beispiel
$_COOKIE, als auch in $_REQUEST zur
Verfügung. Für weitere Details und Beispiele lesen Sie bitte die
setcookie()-Seite des Handbuchs.
Hinweis:
Aus Sicherheitsgründen werden ab PHP 7.2.34, 7.3.23 bzw. 7.4.11 die
Namen der eingehenden Cookies nicht mehr
URL-dekodiert.
Wenn Sie einer einzelnen Cookie-Variablen mehrere Werte zuweisen wollen,
müssen Sie diese als Array zuweisen. Zum Beispiel:
Das erzeugt zwei einzelne Cookies, obwohl MyCookie in
Ihrem Skript nun ein einziges Array ist. Wenn Sie nur ein Cookie mit
mehreren Werten setzen wollen, sollten Sie erwägen,
serialize() oder explode() auf das
Array anzuwenden.
Bedenken Sie, dass ein Cookie ein vorhergehendes Cookie gleichen Namens
überschreibt, es sei denn, der Pfad oder die Domain sind anders. Für eine
Warenkorb-Anwendung können Sie deshalb z. B. einen Zähler erstellen und
diesen weiterleiten:
Beispiel #4 Ein setcookie()-Beispiel
<?php
if (isset($_COOKIE['zaehler'])) {
$count = $_COOKIE['zaehler'] + 1;
} else {
$count = 1;
}
setcookie('zaehler', $count, time()+3600);
setcookie("Cart[$count]", $item, time()+3600);
?>
Punkte in eingehenden Variablennamen
Normalerweise verändert PHP die Variablennamen nicht, wenn sie einem
Skript übergeben werden. Es sollte aber beachtet werden, dass der Punkt
(".") kein gültiger Bestandteil eines Variablennamens ist. Deshalb achten
Sie auf folgendes:
<?php
$varname.ext; /* ungültiger Variablenname */
?>
Der PHP-Parser sieht eine Variable namens
$varname,
gefolgt von einem Zeichenketten-Verbindungsoperator, dieser wiederum
gefolgt von der offenen Zeichenkette 'ext' (also nicht eingegrenzt durch
'"' und auch keinem Schlüsselwort oder reserviertem Bezeichner
entsprechend). Das kann natürlich nicht zum gewünschten Ergebnis führen.
Deshalb ist es wichtig zu wissen, dass PHP in den ihm übergebenen
Variablen alle Punkte (.) automatisch durch einen Unterstrich (_)
ersetzt.
Bestimmung des Variablen-Typs
Da PHP den Typ der Variablen bestimmt und (im Allgemeinen) selbst eine
entsprechende Umformung vornimmt, ist es nicht immer klar, welchen Typ
eine Variable gerade hat. PHP beinhaltet einige Funktionen, die dies
herausfinden, wie zum Beispiel: gettype(),
is_array(), is_float(),
is_int(), is_object() und
is_string(). Lesen Sie bitte auch das Kapitel über
Typen.
Da HTTP ein Text-Protokoll ist, werden die meisten, wenn nicht alle
Inhalte von
superglobalen Arrays,
wie $_POST und $_GET, als
Zeichenketten erhalten bleiben. PHP wird nicht versuchen, die Werte in
spezifische Typen umzuwandeln. Im Beispiel weiter unten enthält
$_GET["var1"] die Zeichenkette "null" und
$_GET["var2"] die Zeichenkette "123".
/index.php?var1=null&var2=123