Huymada

Cookie Examples

Mar 13th, 2026
3,592
0
Never
2
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.36 KB | None | 0 0
  1. <?php
  2. /**
  3.  * Exemplos de uso da classe Cookie v2.0
  4.  */
  5.  
  6. // Estenda a classe e defina o nome do cookie
  7. class SessionCookie extends Cookie {
  8.     public string $name = 'minha_sessao';
  9.     public int    $ttl  = 3600 * 24 * 30; // 30 dias
  10. }
  11.  
  12. $cookie = new SessionCookie();
  13.  
  14.  
  15. // =============================================================================
  16. // has() — Verifica se uma chave existe
  17. // =============================================================================
  18.  
  19. if ($cookie->has('user_id')) {
  20.     echo "Usuário já identificado.\n";
  21. } else {
  22.     echo "Nenhum usuário no cookie.\n";
  23. }
  24.  
  25.  
  26. // =============================================================================
  27. // add() — Adiciona ou atualiza um valor
  28. // =============================================================================
  29.  
  30. $cookie->add('user_id', 42);
  31. $cookie->add('theme', 'dark');
  32. $cookie->add('lang', 'pt-BR');
  33.  
  34.  
  35. // =============================================================================
  36. // get() — Lê um valor com fallback opcional
  37. // =============================================================================
  38.  
  39. $user_id = $cookie->get('user_id');           // 42
  40. $theme   = $cookie->get('theme', 'light');    // 'dark'
  41. $missing = $cookie->get('nao_existe', 'N/A'); // 'N/A'
  42.  
  43. echo "Usuário : {$user_id}\n";
  44. echo "Tema    : {$theme}\n";
  45. echo "Ausente : {$missing}\n";
  46.  
  47.  
  48. // =============================================================================
  49. // all() — Retorna todos os dados
  50. // =============================================================================
  51.  
  52. $dados = $cookie->all();
  53.  
  54. foreach ($dados as $key => $value) {
  55.     echo "{$key}: {$value}\n";
  56. }
  57.  
  58. // user_id: 42
  59. // theme: dark
  60. // lang: pt-BR
  61.  
  62.  
  63. // =============================================================================
  64. // del() — Remove uma chave específica
  65. // =============================================================================
  66.  
  67. $cookie->del('lang');
  68.  
  69. echo $cookie->has('lang') ? "ainda existe\n" : "removido\n"; // removido
  70.  
  71.  
  72. // =============================================================================
  73. // logout() — Apaga todos os dados e remove o cookie do browser
  74. // =============================================================================
  75.  
  76. $cookie->logout();
  77.  
  78. echo count($cookie->all()) === 0 ? "Cookie limpo.\n" : "Ainda tem dados.\n";
  79.  
  80.  
  81. // =============================================================================
  82. // Personalizando as opções de segurança
  83. // (por exemplo, em ambiente local sem HTTPS)
  84. // =============================================================================
  85.  
  86. class DevCookie extends Cookie {
  87.     public string $name    = 'dev_session';
  88.     public array  $options = [
  89.         'path'     => '/',
  90.         'secure'   => false,  // HTTP permitido em ambiente local
  91.         'httponly' => true,
  92.         'samesite' => 'Lax',
  93.     ];
  94. }
  95.  
  96. $dev = new DevCookie();
  97. $dev->add('debug', true);
  98.  
  99.  
  100. // =============================================================================
  101. // Tratando o erro de headers já enviados
  102. // =============================================================================
  103.  
  104. try {
  105.     $cookie->add('chave', 'valor');
  106. } catch (RuntimeException $e) {
  107.     error_log($e->getMessage());
  108.     // "Não é possível definir o cookie 'minha_sessao' — headers já enviados em index.php:10"
  109. }
Advertisement