Umgang mit Cookies. So geht’s mit php.

// Lebenszeit 1 Stunde
setcookie('cookieName', 'cookieValue', time()+3600, '/');
// Lebenszeit 2 Tage
setcookie('cookieName', 'cookieValue', time()+3600*24*2, '/');

// Cookie löschen indem das Ende der Lebenszeit in der Vergangenheit gesetzt wird
setcookie('cookieName', '', time()-3600); // z.B. 1 Stunde

// Cookie überprüfen
$cookie = filter_input(INPUT_COOKIE, 'cookieName');
if (!isset($cookie)){
  // doSomething
}

 

Flags

setcookie('cookieName', 'cookieValue', time()+3600, '/', '', false, true);
  • cookieName = der Name des Cookies (name) 
  • cookieValue = Wert des Cookies (value)
  • time()+3600 = Hier wird mit time() + die Lebenszeit des Cookies in Sekunden eingetragen. time() + 3600 * 24 wäre ein Tag. (expire)
  • '' = Hier kann die Doamin agegeben werden der das Cookie zur Verfügung steht. (domain)
  • false = Cookie wird per http oder https übertragen. Bei true nur über https. (secure)
  • true = Ist dieser Flag auf true, ist  das Cookie nicht mehr für clientseitige Skriptsprachen wie JavaScript auslesbar/veränderbar. (httponly)

Rückgabewert

Die Methode setcookie() liefert im Erfolgsfall den Rückgabewert true bzw. falls das Cookie nicht gesetzt werden konnnte false. Dies ist jedoch unabhängig von clientseitigen Einstellungen oder Cookieblockern.
Bevor die Methode verwednet wird darf keine Ausgabe erfolgen.

Cookie für Domain und Subdomain

$host = filter_input(INPUT_SERVER, 'HTTP_HOST');
preg_match('/[^\.\/]+\.[^\.\/]+$/', $host, $matches);
$domain =  $matches[0];
setcookie('COOKIENAME', 'COOKIEVALUE', time()+3600*24*365, '/', '.'.$domain);