Cookie helper.
Class declared in SYSPATH/classes/cookie.php on line 3.
string
$domainlink to thisRestrict the domain that the cookie is available to
NULL
integer
$expirationlink to thisNumber of seconds before the cookie expires
integer 0
boolean
$httponlylink to thisOnly transmit cookies over HTTP, disabling Javascript access
bool FALSE
string
$pathlink to thisRestrict the path that the cookie is available to
string(1) "/"
string
$saltlink to thisMagic salt to add to the cookie
string(5) "12345"
boolean
$securelink to thisOnly transmit cookies over secure connections
bool FALSE
Deletes a cookie by making the value NULL and expiring it.
Cookie::
delete
(
'theme'
);
string
$name
required - Cookie nameboolean
public
static
function
delete
(
$name
)
{
// Remove the cookie
unset(
$_COOKIE
[
$name
]);
// Nullify the cookie and make it expire
return
setcookie(
$name
, NULL, -86400, Cookie::
$path
, Cookie::
$domain
, Cookie::
$secure
, Cookie::
$httponly
);
}
Gets the value of a signed cookie. Cookies without signatures will not be returned. If the cookie signature is present, but invalid, the cookie will be deleted.
// Get the "theme" cookie, or use "blue" if the cookie does not exist
$theme
= Cookie::get(
'theme'
,
'blue'
);
string
$key
required - Cookie namemixed
$default
= NULL - Default value to returnstring
public
static
function
get(
$key
,
$default
= NULL)
{
if
( ! isset(
$_COOKIE
[
$key
]))
{
// The cookie does not exist
return
$default
;
}
// Get the cookie value
$cookie
=
$_COOKIE
[
$key
];
// Find the position of the split between salt and contents
$split
=
strlen
(Cookie::salt(
$key
, NULL));
if
(isset(
$cookie
[
$split
]) AND
$cookie
[
$split
] ===
'~'
)
{
// Separate the salt and the value
list (
$hash
,
$value
) =
explode
(
'~'
,
$cookie
, 2);
if
(Cookie::salt(
$key
,
$value
) ===
$hash
)
{
// Cookie signature is valid
return
$value
;
}
// The cookie signature is invalid, delete it
Cookie::
delete
(
$key
);
}
return
$default
;
}
Generates a salt string for a cookie based on the name and value.
$salt
= Cookie::salt(
'theme'
,
'red'
);
string
$name
required - Name of cookiestring
$value
required - Value of cookiestring
public
static
function
salt(
$name
,
$value
)
{
// Require a valid salt
if
( ! Cookie::
$salt
)
{
throw
new
Kohana_Exception(
'A valid cookie salt is required. Please set Cookie::$salt.'
);
}
// Determine the user agent
$agent
= isset(
$_SERVER
[
'HTTP_USER_AGENT'
]) ?
strtolower
(
$_SERVER
[
'HTTP_USER_AGENT'
]) :
'unknown'
;
return
sha1(
$agent
.
$name
.
$value
.Cookie::
$salt
);
}
Sets a signed cookie. Note that all cookie values must be strings and no automatic serialization will be performed!
// Set the "theme" cookie
Cookie::set(
'theme'
,
'red'
);
string
$name
required - Name of cookiestring
$value
required - Value of cookieinteger
$expiration
= NULL - Lifetime in secondsboolean
public
static
function
set(
$name
,
$value
,
$expiration
= NULL)
{
if
(
$expiration
=== NULL)
{
// Use the default expiration
$expiration
= Cookie::
$expiration
;
}
if
(
$expiration
!== 0)
{
// The expiration is expected to be a UNIX timestamp
$expiration
+= time();
}
// Add the salt to the cookie value
$value
= Cookie::salt(
$name
,
$value
).
'~'
.
$value
;
return
setcookie(
$name
,
$value
,
$expiration
, Cookie::
$path
, Cookie::
$domain
, Cookie::
$secure
, Cookie::
$httponly
);
}