1: <?php defined('_JOOS_CORE') or exit();
2:
3: /**
4: * Работа с куками
5: *
6: * @version 1.0
7: * @package Core\Libraries
8: * @subpackage Cookie
9: * @category Libraries
10: * @author Joostina Team <info@joostina.ru>
11: * @copyright (C) 2007-2012 Joostina Team
12: * @license MIT License http://www.opensource.org/licenses/mit-license.php
13: * Информация об авторах и лицензиях стороннего кода в составе Joostina CMS: docs/copyrights
14: *
15: * */
16: class joosCookie
17: {
18: /**
19: * Установка куки
20: *
21: * @tutorial joosCookie::set('cookie_name', 'cookie_value'); // просто установка куки с названием cookie_name и значением cookie_value
22: * @tutorial joosCookie::set('cookie_name', 'cookie_value', array( 'expires'=>'next day' ) ); // установка куки со временем жизни - 1 день
23: * @tutorial joosCookie::set('cookie_name', 'cookie_value', array( 'expires' => '+1 ', 'secure' => true, 'httponly' => true));
24: *
25: * @param string $name название куки
26: * @param string $value значение куки
27: * @param array $params массив необязательных параметров, имеет ключи:
28: * expires - время жизни куки, помимо указания точного времени в секундах, можно использовать логические обозначения принимаемые стандартной php-функцией strtotime
29: * path - путь установки куки, по умолчанию кука ставится в / - корень сайта
30: * domain - адрес домена на который ставится кука, по умолчанию - на текущий
31: * secure - показывает, что кука должна быть передана через защищенное HTTPS соединение
32: * httponly - означает, что кука не будет доступна на скриптовых языках, таких как JavaScript. Предпологается что данный параметр может помочь уменьшить кражи личных данных через XSS-атаки (хотя это не поддерживается всеми браузерами)
33: */
34: public static function set($name, $value, array $params = array())
35: {
36: $expires = isset($params['expires']) ? $params['expires'] : NULL;
37: $path = isset($params['path']) ? $params['path'] : '/';
38: $domain = isset($params['domain']) ? $params['domain'] : JPATH_COOKIE;
39: $secure = isset($params['secure']) ? $params['secure'] : false;
40: $httponly = isset($params['httponly']) ? $params['httponly'] : false;
41:
42: if ($expires && !is_numeric($expires)) {
43: $expires = strtotime($expires);
44: }
45:
46: setcookie($name, $value, $expires, $path, $domain, $secure, ($httponly ? true : null));
47: }
48:
49: /**
50: * Получение значения куки по ключу
51: *
52: * @tutorial joosCookie::get('cookie_name'); // получение куки с названием cookie_name
53: * @tutorial joosCookie::get('cookie_name','default_data'); // получение куки с названием cookie_name, если она отсутствует - то будет использовано значение default_data
54: *
55: * @param string $name название куки
56: * @param string $default_value значение куки по умолчанию
57: *
58: * @return string имеющееся значение куки, либо значение переданное в функцию по умолчанию
59: */
60: public static function get($name, $default_value = NULL)
61: {
62: return isset($_COOKIE[$name]) ? $_COOKIE[$name] : $default_value;
63: }
64:
65: /**
66: * Удаление куки
67: *
68: * @tutorial joosCookie::delete( 'cookie_name' ); // удалит куку с названием cookie_name
69: *
70: * @param string $name название куки для удаления
71: * @param array $params массив необязательных параметров, имеет ключи полностью аналогичные необязательным параметрам joosCookie::set
72: */
73: public static function delete($name, array $params = array())
74: {
75: $params['expires'] = isset($params['expires']) ? $params['expires'] : time() - 3600;
76: self::set($name, false, $params);
77: }
78:
79: }
80: