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