class CookieJar implements Cookie_Backend (View source)

A default backend for the setting and getting of cookies

This backend allows one to better test Cookie setting and separate cookie handling from the core

Create a config array for defaults (eg: httpOnly, secure, path, domain, expiry) A getter for cookies that haven't been sent to the browser yet Tests / a way to set the state without hacking with $_COOKIE Store the meta information around cookie setting (path, domain, secure, etc)

Properties

protected array $existing

Hold the cookies that were existing at time of instantiation (ie: The ones sent to PHP by the browser)

protected array $current

Hold the current cookies (ie: a mix of those that were sent to us and we have set without the ones we've cleared)

protected array $new

Hold any NEW cookies that were set by the application and will be sent in the next response

Methods

public
__construct(array $cookies = [])

When creating the backend we want to store the existing cookies in our "existing" array. This allows us to distinguish between cookies we received or we set ourselves (and didn't get from the browser)

public
set(string $name, string $value, float $expiry = 90, string $path = null, string $domain = null, bool $secure = false, bool $httpOnly = true)

Set a cookie

public
string|null
get(string $name, bool $includeUnsent = true)

Get the cookie value by name

public
array
getAll(bool $includeUnsent = true)

Get all the cookies

public
forceExpiry(string $name, string $path = null, string $domain = null, bool $secure = false, bool $httpOnly = true)

Force the expiry of a cookie by name

protected
bool
outputCookie(string $name, string|array $value, int $expiry = 90, string $path = null, string $domain = null, bool $secure = false, bool $httpOnly = true)

The function that actually sets the cookie using PHP

Details

__construct(array $cookies = [])

When creating the backend we want to store the existing cookies in our "existing" array. This allows us to distinguish between cookies we received or we set ourselves (and didn't get from the browser)

Parameters

array $cookies

The existing cookies to load into the cookie jar

set(string $name, string $value, float $expiry = 90, string $path = null, string $domain = null, bool $secure = false, bool $httpOnly = true)

Set a cookie

Parameters

string $name

The name of the cookie

string $value

The value for the cookie to hold

float $expiry

The number of days until expiry

string $path

The path to save the cookie on (falls back to site base)

string $domain

The domain to make the cookie available on

bool $secure

Can the cookie only be sent over SSL?

bool $httpOnly

Prevent the cookie being accessible by JS

string|null get(string $name, bool $includeUnsent = true)

Get the cookie value by name

Cookie names are normalised to work around PHP's behaviour of replacing incoming variable name . with _

Parameters

string $name

The name of the cookie to get

bool $includeUnsent

Include cookies we've yet to send when fetching values

Return Value

string|null

The cookie value or null if unset

array getAll(bool $includeUnsent = true)

Get all the cookies

Parameters

bool $includeUnsent

Include cookies we've yet to send

Return Value

array

All the cookies

forceExpiry(string $name, string $path = null, string $domain = null, bool $secure = false, bool $httpOnly = true)

Force the expiry of a cookie by name

Parameters

string $name

The name of the cookie to expire

string $path

The path to save the cookie on (falls back to site base)

string $domain

The domain to make the cookie available on

bool $secure

Can the cookie only be sent over SSL?

bool $httpOnly

Prevent the cookie being accessible by JS

protected bool outputCookie(string $name, string|array $value, int $expiry = 90, string $path = null, string $domain = null, bool $secure = false, bool $httpOnly = true)

The function that actually sets the cookie using PHP

Parameters

string $name

The name of the cookie

string|array $value

The value for the cookie to hold

int $expiry

A Unix timestamp indicating when the cookie expires; 0 means it will expire at the end of the session

string $path

The path to save the cookie on (falls back to site base)

string $domain

The domain to make the cookie available on

bool $secure

Can the cookie only be sent over SSL?

bool $httpOnly

Prevent the cookie being accessible by JS

Return Value

bool

If the cookie was set or not; doesn't mean it's accepted by the browser

See also

http://uk3.php.net/manual/en/function.setcookie.php