<?php namespace nur; /** * Class cookie: gestion des cookies */ class cookie { /** chemin par défaut des cookies qui sont placés */ const PATH = "/"; /** @var string */ protected static $path; /** obtenir le chemin par défaut des cookies qui sont placés */ static final function get_path(): string { $path = self::$path; if ($path === null) $path = static::PATH; return $path; } /** spécifier le chemin par défaut des cookies qui sont placés */ static final function set_path(string $path): void { self::$path = $path; } /** vérifier si le cookie spécifié existe. */ static final function has($name): bool { if ($name === null || $name === false) return false; return array_key_exists($name, $_COOKIE); } /** obtenir la valeur du cookie spécifié. */ static final function get(string $name, $default=null) { return A::get($_COOKIE, $name, $default); } /** * spécifier / mettre à jour la valeur du cookie spécifié. * * il s'agit d'un cookie de session, qui disparait à la fermeture du navigateur. * * retourner la valeur effectivement spécifiée (elle est transformée en chaine) */ static final function set(string $name, $value="", ?string $path=null, bool $update_COOKIE=true) { if ($path === null) $path = self::get_path(); $value = strval($value); setcookie($name, $value, 0, $path); if ($update_COOKIE) { // On peut avoir besoin de relire le cookie $_COOKIE[$name] = $value; } return $value; } /** * spécifier / mettre à jour la valeur du cookie spécifié, qui doit avoir une * durée de vie maximum de $delay minutes * * $delay est le nombre de minute au bout duquel le cookie doit expirer à * partir de l'heure courante * * retourner la valeur effectivement spécifiée (elle est transformée en chaine) */ static final function setd(string $name, $value="", int $delay=30, ?string $path=null, bool $update_COOKIE=true) { if ($path === null) $path = self::get_path(); $value = strval($value); setcookie($name, $value, time() + $delay * 60, $path); if ($update_COOKIE) { // On peut avoir besoin de relire le cookie $_COOKIE[$name] = $value; } return $value; } /** demander la suppression du cookie spécifié */ static final function del(string $name, ?string $path=null): void { if ($path === null) $path = self::get_path(); setcookie($name, false, 0, $path); } }