0byt3m1n1
Path:
/
data
/
applications
/
aps
/
xoops
/
2.5.1a-0
/
standard
/
htdocs
/
modules
/
system
/
class
/
[
Home
]
File: cookie.php
<?php /** * Cookie class * * You may not change or alter any portion of this comment or credits * of supporting developers from this source code or any supporting source code * which is considered copyrighted (c) material of the original comment or credit authors. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/ * @license GNU GPL 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/ * @license http://www.fsf.org/copyleft/gpl.html GNU public license * @author Andricq Nicolas (AKA MusS) * @package system * @version $Id:$ */ class Cookie { // Reserved session keys private static $_reserved = array('XOLOGGERVIEW', 'xoops_user'); // Static class cannot be initialized private function __construct() {} // Alias for delete() function public static function del($key) { self::delete($key); } // Delete a cookie public static function delete($key) { // Change string representation array to key/value array $key = self::_scrubKey($key); // Make sure the cookie exists if (self::exists($key)) { // Check for key array if (is_array($key)) { // Grab key/value pair list ($k, $v) = each($key); // Set string representation $key = $k . '[' . $v . ']'; // Set expiration time to -1hr (will cause browser deletion) setcookie($key, false, time() - 3600); // Unset the cookie unset($_COOKIE[$k][$v]); } // Check for cookie array else if (is_array($_COOKIE[$key])) { foreach ($_COOKIE[$key] as $k => $v) { // Set string representation $cookie = $key . '[' . $k . ']'; // Set expiration time to -1hr (will cause browser deletion) setcookie($cookie, false, time() - 3600); // Unset the cookie unset($_COOKIE[$key][$k]); } } // Unset single cookie else { // Set expiration time to -1hr (will cause browser deletion) setcookie($key, false, time() - 3600); // Unset key unset($_COOKIE[$key]); } } } // See if a cookie key exists public static function exists($key) { // Change string representation array to key/value array $key = self::_scrubKey($key); // Check for array if (is_array($key)) { // Grab key/value pair list ($k, $v) = each($key); // Check for key/value pair and return if (isset($_COOKIE[$k][$v])) return true; } // If key exists, return true else if (isset($_COOKIE[$key])) return true; // Key does not exist return false; } // Get cookie information public static function get($key) { // Change string representation array to key/value array $key = self::_scrubKey($key); // Check for array if (is_array($key)) { // Grab key/value pair list ($k, $v) = each($key); // Check for key/value pair and return if (isset($_COOKIE[$k][$v])) return $_COOKIE[$k][$v]; } // Return single key if it's set else if (isset($_COOKIE[$key])) return $_COOKIE[$key]; // Otherwise return null else return null; } // Return the cookie array public static function contents() { return $_COOKIE; } // Set cookie information public static function set( $key, $value, $expire = 0, /* Default expire time (session, 1 week = 604800) */ $path = '', /* Default path */ $domain = '', /* Default domain */ $secure = false, /* Does this cookie need a secure HTTPS connection? */ $httponly = true /* Can non-HTTP services access this cookie (IE: javascript)? */ ){ // Make sure they aren't trying to set a reserved word if (!in_array($key, self::$_reserved)) { // If $key is in array format, change it to string representation $key = self::_scrubKey($key, true); // Store the cookie setcookie($key, $value, $expire, $path, $domain, $secure, $httponly); } // Otherwise, throw an error else Error::warning('Could not set key -- it is reserved.', __CLASS__); } // Converts strings to arrays (or vice versa if toString = true) private static function _scrubKey($key, $toString = false) { // Converting from array to string if ($toString) { // If $key is in array format, change it to string representation if (is_array($key)) { // Grab key/value pair list ($k, $v) = each($key); // Set string representation $key = $k . '[' . $v . ']'; } } // Converting from string to array else if (!is_array($key)) { // is this a string representation of an array? if (preg_match('/([\w\d]+)\[([\w\d]+)\]$/i', $key, $matches)) { // Store as key/value pair $key = array($matches[1] => $matches[2]); } } // Return key return $key; } } ?>