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