PHP Handbuch
Zurück |  | Nach vorne

# setcookie

(PHP 3, PHP 4 )

setcookie -- Sendet ein Cookie

## Beschreibung:

int setcookie ( string name, string value, int expire, string path, string domain, int secure [, string value [, int expire [, string path [, string domain [, int secure]]]]])

setcookie() definiert ein mit den Header-Informationen zu übertragendes Cookie. Cookies müssen vor irgendwelchen anderen Headern gesendet werden (dies ist eine Einschränkung der Cookies, nicht von PHP). Sie müssen deshalb solche Funktionsaufrufe vor irgendwelchen `<html>`- oder `<head>`-Tags im Skript einsetzen.

Alle Argumente - ausser `name` - sind optional. Ist nur der Name angegeben wird das Cookie mit diesem Namen auf dem Client gelöscht. Sie können beliebige Argumente auch durch einen Leerstring ("") ersetzen, um diese Argumente zu übergehen. Der `expire`-Parameter und das `secure`-Argument sind Integer-Werte und können nicht mit einem Leerstring übersprungen werden. Setzen sie statt dessen `NULL` (0). Der `expire`-Parameter ist ein normaler UNIX-Zeitwert als Integer-Zahl, wie er von der time() oder mktime()-Funktion zurück gegeben wird. Das `secure`-Argument bedeutet, dass das Cookie nur über eine sichere HTTP-Verbindung geschickt werden soll.

Anwendungsbereiche:

- Cookies werden nicht sichtbar, bevor nicht eine Seite geladen wird, in der das Cookie sichtbar sein soll.

- Cookies müssen mit den selben Parametern gelöscht werden, mit denen sie gesetzt wurden.

In PHP3 werden mehrfache Aufrufe von setcookie() im selben Skript in umgekehrter Reihenfolge abgearbeitet. Sollten sie also ein Cookie löschen wollen bevor sie ein anderes setzen, sollten sie das Setzen vor dem Löschen vornehmen. In PHP4 werden mehrfache Aufrufe von setcookie() in der Reihenfolge ihres Aufrufs behandelt.

Einige Beispiele, wie Cookies gesetzt / gesendet werden:

Beispiel 1. setcookie()-Beispiele:
    setcookie ("TestCookie", "Test Value");
    setcookie ("TestCookie", $value, time()+3600);  /* verfällt in 1 Stunde */
    setcookie ("TestCookie", $value, time()+3600, "/~rasmus/", ".utoronto.ca",1);

Beispiele, wie die vorhergehenden Cookies wieder gelöscht werden:

Beispiel 2. setcookie()-Beispiele:
    setcookie ("TestCookie");
    // Setzen des Ablauf-Zeitpunktes auf 1 Stunde vorher
    setcookie ("TestCookie", "", time() - 3600);
    setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca",1);

Beim Löschen eines Cookies sollten sie sicher stellen, dass die Verfallszeit in der Vergangenheit liegt, damit ihr Browser "zufrieden" ist.

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 trägt. Um die Inhalte unserer Test-Cookies zu sehen, brauchen sie nur eines der folgenden Beispiel zu benutzen:

    echo $TestCookie;
    echo $HTTP_COOKIE_VARS["TestCookie"];

Sie können 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:

    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";
        }
    }

Weitere Informationen zu Cookies und deren Spezifikationen erhalten sie bei Netscape unter http://www.netscape.com/newsref/std/cookie_spec.html.

Microsofts Internet-Explorer 4 mit Servive-Pack 1 geht nicht korrekt mit Cookies um, die den Pfad-Parameter beinhalten.

Netscape Communicator 4.05 und Microsoft Internet Explorer 3.x scheinen mit Cookies Probleme zu haben, wenn die Argumente für Pfad und Zeit nicht angegeben sind.

Zurück | Zum Anfang | Nach vorne
headers_sent | Nach oben | Hyperwave functions