81 lines
2.4 KiB
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);
|
||
|
}
|
||
|
}
|