Source for file cookies.php
Documentation is available at cookies.php
* Base include file for SimpleTest
* @version $Id: cookies.php 1723 2008-04-08 00:34:10Z lastcraft $
* include other SimpleTest class files
require_once(dirname(__FILE__
) .
'/url.php');
* Cookie data holder. Cookie rules are full of pretty
* arbitary stuff. I have used...
* http://wp.netscape.com/newsref/std/cookie_spec.html
* http://www.cookiecentral.com/faq/
* Constructor. Sets the stored values.
* @param string $name Cookie key.
* @param string $value Value of cookie.
* @param string $path Cookie path if not host wide.
* @param string $expiry Expiry date as string.
* @param boolean $is_secure Currently ignored.
function SimpleCookie($name, $value =
false, $path =
false, $expiry =
false, $is_secure =
false) {
$this->_path =
($path ?
$this->_fixPath($path) :
"/");
* Sets the host. The cookie rules determine
* that the first two parts are taken for
* certain TLDs and three for others. If the
* new host does not match these rules then the
* @param string $host New hostname.
* @return boolean True if hostname is valid.
if ($host =
$this->_truncateHost($host)) {
* Accessor for the truncated host to which this
* @return string Truncated hostname.
* Test for a cookie being valid for a host name.
* @param string $host Host to test against.
* @return boolean True if the cookie would be valid
return ($this->_truncateHost($host) ===
$this->getHost());
* Extracts just the domain part that determines a
* cookie's host validity.
* @param string $host Host name to truncate.
* @return string Domain or false on a bad host.
function _truncateHost($host) {
if (preg_match('/[a-z\-]+\.(' .
$tlds .
')$/i', $host, $matches)) {
} elseif (preg_match('/[a-z\-]+\.[a-z\-]+\.[a-z\-]+$/i', $host, $matches)) {
* @return string Cookie key.
* Accessor for value. A deleted cookie will
* have an empty string for this.
* @return string Cookie value.
* @return string Valid cookie path.
* Tests a path to see if the cookie applies
* there. The test path must be longer or
* equal to the cookie path.
* @param string $path Path to test against.
* @return boolean True if cookie valid here.
* @return string Expiry string.
* Test to see if cookie is expired against
* the cookie format time or timestamp.
* Will give true for a session cookie.
* @param integer/string $now Time to test against. Result
* will be false if this time
* is later than the cookie expiry.
* Can be either a timestamp integer
* or a cookie format date.
* Ages the cookie by the specified number of
* @param integer $interval In seconds.
* Accessor for the secure flag.
* @return boolean True if cookie needs SSL.
* Adds a trailing and leading slash to the path
* @param string $path Path to fix.
function _fixPath($path) {
if (substr($path, 0, 1) !=
'/') {
if (substr($path, -
1, 1) !=
'/') {
* Repository for cookies. This stuff is a
* tiny bit browser dependent.
* Constructor. Jar starts empty.
* Removes expired and temporary cookies as if
* the browser was closed and re-opened.
* @param string/integer $now Time to test expiry against.
$surviving_cookies =
array();
if (! $this->_cookies[$i]->getValue()) {
if (! $this->_cookies[$i]->getExpiry()) {
if ($date &&
$this->_cookies[$i]->isExpired($date)) {
$surviving_cookies[] =
$this->_cookies[$i];
* Ages all cookies in the cookie jar.
* @param integer $interval The old session is moved
* into the past by this number
* of seconds. Cookies now over
$this->_cookies[$i]->agePrematurely($interval);
* Sets an additional cookie. If a cookie has
* the same name and path it is replaced.
* @param string $name Cookie key.
* @param string $value Value of cookie.
* @param string $host Host upon which the cookie is valid.
* @param string $path Cookie path if not host wide.
* @param string $expiry Expiry date.
function setCookie($name, $value, $host =
false, $path =
'/', $expiry =
false) {
$this->_cookies[$this->_findFirstMatch($cookie)] =
$cookie;
* Finds a matching cookie to write over or the
* first empty slot if none.
* @param SimpleCookie $cookie Cookie to write into jar.
* @return integer Available slot.
function _findFirstMatch($cookie) {
$is_match =
$this->_isMatch(
* Reads the most specific cookie value from the
* browser cookies. Looks for the longest path that
* @param string $host Host to search.
* @param string $path Applicable path.
* @param string $name Name of cookie to read.
* @return string False if not present, else the
if ($this->_isMatch($cookie, $host, $path, $name)) {
$value =
$cookie->getValue();
$longest_path =
$cookie->getPath();
return (isset
($value) ?
$value :
false);
* Tests cookie for matching against search
* @param SimpleTest $cookie Cookie to test.
* @param string $host Host must match.
* @param string $path Cookie path must be shorter than
* @param string $name Name must match.
* @return boolean True if matched.
function _isMatch($cookie, $host, $path, $name) {
if ($cookie->getName() !=
$name) {
if ($host &&
$cookie->getHost() &&
! $cookie->isValidHost($host)) {
if (! $cookie->isValidPath($path)) {
* Uses a URL to sift relevant cookies by host and
* path. Results are list of strings of form "name=value".
* @param SimpleUrl $url Url to select by.
* @return array Valid name and value pairs.
if ($this->_isMatch($cookie, $url->getHost(), $url->getPath(), $cookie->getName())) {
$pairs[] =
$cookie->getName() .
'=' .
$cookie->getValue();
Documentation generated on Sun, 04 May 2008 09:21:23 -0500 by phpDocumentor 1.3.0