nur-sery/nur_src/cookie.php

81 lines
2.4 KiB
PHP

<?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);
}
}