Пример установки cookie пользователю

Первый и второй аргумент функции, name и value передается непосредсвенно функией SetCookie. Третий аргумент может иметь одно из следующий значений:

  • аргумент не указан (или ноль), куки будут установленны для текущей сессии, и будут не действительны после закрытия браузера;
  • положительное число. Количество дней;
  • аргумент начинается с буквы 'f' (forever), куки будут установленны на всегда;
  • аргумент начинается с буквы 'r' (remove), установленный куки будут удалены.
code: #php
  1. <?php
  2. function put_cookie($name, $value, $days=0)
  3. {
  4.     $cookie_host = preg_replace('|^www\.(.*)$|', '.\\1', $_SERVER['HTTP_HOST']);
  5.  
  6.     if (substr(strval($days), 0, 1) == 'f')
  7.         $exp = 2147483640;
  8.     else if (substr(strval($days), 0, 1) == 'r')
  9.     {
  10.         $exp = 1; $value = '';
  11.     }
  12.     else if ($days != 0)
  13.         $exp = time() + intval($days)*86400;
  14.     else
  15.         $exp = 0;
  16.  
  17.     setcookie($name, $value, $exp, '/', $cookie_host);
  18. }
  19. ?>
code: #php
  1. <?php
  2. error_reporting(E_ALL); // high level of error reporting
  3.  
  4. // copy-paste function ae_put_cookie here from above
  5.  
  6. if (strtolower($_SERVER['REQUEST_METHOD']) == 'post')
  7. {
  8.     if (isset($_POST['notepad']))
  9.     {
  10.         $days = isset($_POST['days'])?$_POST['days']:'';
  11.         put_cookie('notepad', $_POST['notepad'], $days);
  12.         header("Location: http://{$_SERVER['HTTP_HOST']}{$_SERVER['PHP_SELF']}");
  13.     }
  14. }
  15.  
  16. ?>
  17. <html><head><title>CookieNotepad</title></head>
  18. <body>
  19. <?php
  20. if (!isset($_COOKIE['notepad']))
  21.     echo "<b>Cookie for notepad is not set</b><br>";
  22. ?>
  23.  
  24. <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
  25. Text:<br>
  26. <textarea rows="10" cols="60" name="notepad">
  27. <?php
  28. if (isset($_COOKIE['notepad']))
  29. {
  30.     // escape HTML tags and entities
  31.     $s = str_replace('&', '&amp;', $_COOKIE['notepad']);
  32.     $s = str_replace('<', '&lt;', $s);
  33.     $s = str_replace('>', '&gt;', $s);
  34.     echo $s;
  35. }
  36. ?></textarea>
  37. <br>
  38. Third argument for put_cookie:<br>
  39. <input type="text" name="days" size="10"><br>
  40. (empty - session cookie, 'f' - forever, 'r' - remove, integer &gt; 0 - number of days in future)
  41. <br><br>
  42. <input type="submit" value="create/save">
  43. </form>
  44. </body>
  45. </html>
Поделиться:

Похожие статьи:

теги: cookies