skip to main |
skip to sidebar
<?php
* Base include file for SimpleTest * @version $Id: cookies.php 1784 2008-04-26 13:07:14Z pp11 $ * 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 __construct($name, $value = false, $path = false, $expiry = false, $is_secure = false) { $this->path =
($path ?
$this->fixPath
($path) :
"/"); if (is_string
($expiry)) { $this->expiry = strtotime
($expiry); } elseif (is_integer
($expiry)) { $this->is_secure =
$is_secure; * 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. function setHost
($host) { 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 function isValidHost
($host) { 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. protected function truncateHost
($host) { $tlds =
SimpleUrl::getAllTopLevelDomains
(); 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. function isValidPath
($path) { strlen
($this->getPath
())) ==
0); * @return string Expiry string. return gmdate
("D, d M Y H:i:s", $this->expiry) .
" GMT"; * 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. function isExpired
($now) { return ($this->expiry <
$now); * Ages the cookie by the specified number of * @param integer $interval In seconds. function agePrematurely
($interval) { $this->expiry -=
$interval; * 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. protected 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. $this->cookies =
array(); * Removes expired and temporary cookies as if * the browser was closed and re-opened. * @param string/integer $now Time to test expiry against. function restartSession
($date =
false) { $surviving_cookies =
array(); for ($i =
0; $i < count
($this->cookies); $i++
) { if (! $this->cookies[$i]->getValue()) { if (! $this->cookies[$i]->getExpiry()) { if ($date &&
$this->cookies[$i]->isExpired($date)) { $surviving_cookies[] =
$this->cookies[$i]; $this->cookies =
$surviving_cookies; * 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 function agePrematurely
($interval) { for ($i =
0; $i < count
($this->cookies); $i++
) { $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) { $cookie =
new SimpleCookie($name, $value, $path, $expiry); $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. protected function findFirstMatch
($cookie) { for ($i =
0; $i < count
($this->cookies); $i++
) { $is_match =
$this->isMatch
( $this->cookies[$i]->getHost(), $this->cookies[$i]->getPath(), $this->cookies[$i]->getName()); return count
($this->cookies); * 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 function getCookieValue
($host, $path, $name) { foreach ($this->cookies as $cookie) { if ($this->isMatch
($cookie, $host, $path, $name)) { if (strlen
($cookie->getPath()) > strlen
($longest_path)) { $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. protected 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. function selectAsPairs
($url) { foreach ($this->cookies as $cookie) { if ($this->isMatch
($cookie, $url->getHost(), $url->getPath(), $cookie->getName())) { $pairs[] =
$cookie->getName() .
'=' .
$cookie->getValue();
Ky nang ban hang
Google
Thủ thuật, hacking, tool, code, công cụ
Không có nhận xét nào:
Đăng nhận xét