| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 | <?phpclass LtCookie{	public $configHandle;	private $secretKey;	public function __construct()	{		if (! $this->configHandle instanceof LtConfig)		{			if (class_exists("LtObjectUtil", false))			{				$this->configHandle = LtObjectUtil::singleton("LtConfig");			}			else			{				$this->configHandle = new LtConfig;			}		}	}	public function init()	{ 		$this->secretKey = $this->configHandle->get("cookie.secret_key");		if(empty($this->secretKey))		{			trigger_error("cookie.secret_key empty");		}	}	/**	 * Decrypt the encrypted cookie	 * 	 * @param string $encryptedText 	 * @return string 	 */	protected function decrypt($encryptedText)	{		$key = $this->secretKey;		$cryptText = base64_decode($encryptedText);		$ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);		$iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);		$decryptText = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $cryptText, MCRYPT_MODE_ECB, $iv);		return trim($decryptText);	}	/**	 * Encrypt the cookie	 * 	 * @param string $plainText 	 * @return string 	 */	protected function encrypt($plainText)	{		$key = $this->secretKey;		$ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);		$iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);		$encryptText = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $plainText, MCRYPT_MODE_ECB, $iv);		return trim(base64_encode($encryptText));	}	/**	 * Set cookie value to deleted with $name	 * 	 * @param array $args 	 * @return boolean 	 */	public function delCookie($name, $path = '/', $domain = null)	{		if (isset($_COOKIE[$name]))		{			if (is_array($_COOKIE[$name]))			{				foreach($_COOKIE[$name] as $k => $v)				{					setcookie($name . '[' . $k . ']', '', time() - 86400, $path, $domain);				}			}			else			{				setcookie($name, '', time() - 86400, $path, $domain);			}		}	}	/**	 * Get cookie value with $name	 * 	 * @param string $name 	 * @return mixed 	 */	public function getCookie($name)	{		$ret = null;		if (isset($_COOKIE[$name]))		{			if (is_array($_COOKIE[$name]))			{				$ret = array();				foreach($_COOKIE[$name] as $k => $v)				{					$v = $this->decrypt($v);					$ret[$k] = $v;				}			}			else			{				$ret = $this->decrypt($_COOKIE[$name]);			}		}		return $ret;	}	/**	 * Set cookie	 * 	 * @param array $args 	 * @return boolean 	 */	public function setCookie($name, $value = '', $expire = null, $path = '/', $domain = null, $secure = 0)	{		if (is_array($value))		{			foreach($value as $k => $v)			{				$v = $this->encrypt($v);				setcookie($name . '[' . $k . ']', $v, $expire, $path, $domain, $secure);			}		}		else		{			$value = $this->encrypt($value);			setcookie($name, $value, $expire, $path, $domain, $secure);		}	}}
 |