-
-
Notifications
You must be signed in to change notification settings - Fork 8
/
zebra_cookie.src.js
153 lines (130 loc) · 6.1 KB
/
zebra_cookie.src.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
/**
* Zebra_Cookie
*
* A ridiculously small (~500 bytes minified) JavaScript API for writing, reading and deleting browser cookies
*
* Read more {@link https://github.com/stefangabos/Zebra_Cookie/ here}
*
* @author Stefan Gabos <contact@stefangabos.ro>
* @version 2.0.0 (last revision: August 05, 2018)
* @copyright (c) 2011 - 2018 Stefan Gabos
* @license http://www.gnu.org/licenses/lgpl-3.0.txt GNU LESSER GENERAL PUBLIC LICENSE
* @package Zebra_Cookie
*/
var Zebra_Cookie = function() {
'use strict';
/**
* Removes a cookie from the browser.
*
* <code>
* // instantiate the Zebra_Cookie JavaScript object
* var cookie = new Zebra_Cookie();
*
* // create a cookie that expires in 10 minutes
* // named "foo" and having "bar" as value
* cookie.write('foo', 'bar', 10 * 60);
*
* // remove the cookie named "foo" from the browser
* cookie.destroy('foo');
* </code>
*
* @param string name The name of the cookie to remove.
*
* @return boolean Returns TRUE on success or FALSE otherwise.
*/
this.destroy = function(name) {
// remove the cookie by setting its expiration date in the past
return this.write(name, '', -1);
};
/**
* Reads the value of a cookie.
*
* <code>
* // instantiate the Zebra_Cookie JavaScript object
* var cookie = new Zebra_Cookie();
*
* // create a session cookie (expires when the browser is closed)
* // named "foo" and having "bar" as value
* cookie.write('foo', 'bar');
*
* // should show an alert box saying "bar"
* alert(cookie.read('foo'));
* </code>
*
* @param string name The name of the cookie to read.
*
* @return mixed Returns the value of the requested cookie or null if the cookie doesn't exist.
*/
this.read = function(name) {
var
// prepare the regular expression used to find the sought cookie in document.cookie
expression = new RegExp('(^|; )' + encodeURIComponent(name) + '=(.*?)($|;)'),
// search for the cookie and its value
matches = document.cookie.match(expression);
// return the cookie's value
return matches ? decodeURIComponent(matches[2]) : null;
};
/**
* Sets a cookie in the browser.
*
* <code>
* // instantiate the Zebra_Cookie JavaScript object
* var cookie = new Zebra_Cookie();
*
* // create cookie that expires in 1 minute (60 seconds)
* // named "foo" and having "bar" as value
* cookie.write('foo', 'bar', 60);
* </code>
*
* @param string name The name of the cookie
*
* @param string value The value to set
*
* @param integer expire (Optional) The life time of the cookie, in seconds.
*
* If set to 0, or omitted, the cookie will expire at the end of the session (when the
* browser closes).
*
* @param string path (Optional) The path on the server in which the cookie will be available on. If set
* to "/", the cookie will be available within the entire domain. If set to '/foo/', the
* cookie will only be available within the /foo/ directory and all subdirectories such
* as /foo/bar/ of domain.
*
* If omitted, it will be set to "/".
*
* @param string domain (Optional) The domain that the cookie will be available on.
*
* To make the cookie available on all subdomains of example.com, domain should be set
* to to ".example.com". The . (dot) is not required but makes it compatible with more
* browsers. Setting it to "www.example.com" will make the cookie available only in the
* www subdomain.
*
* @param boolean secure (Optional) Indicates whether cookie information should only be transmitted over a
* HTTPS connection.
*
* Default is FALSE.
*
* @return boolean Returns TRUE if the cookie was successfully set, or FALSE otherwise.
*/
this.write = function(name, value, expire, path, domain, secure) {
var date = new Date();
// if "expire" is a number, set the expiration date to as many seconds from now as specified by "expire"
if (expire && typeof expire === 'number') date.setTime(date.getTime() + expire * 1000);
// if "expire" is not specified or is a bogus value, set it to "null"
else expire = null;
// set the cookie
return (document.cookie =
// set the name/value pair
// and also make sure we escape some special characters in the process
encodeURIComponent(name) + '=' + encodeURIComponent(value) +
// if specified, set the expiry date
(expire ? '; expires=' + date.toGMTString() : '') +
// if specified, set the path on the server in which the cookie will be available on
'; path=' + (path || '/') +
// if specified, set the the domain that the cookie is available on
(domain ? '; domain=' + domain : '') +
// if required, set the cookie to be transmitted only over a secure HTTPS connection from the client
(secure ? '; secure' : ''));
};
},
Cookie = new Zebra_Cookie();