程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php Cookies操作類

php Cookies操作類

編輯:PHP綜合

Cookies 操作類

功能:

1.保存,讀取,更新,清除cookies數據。

2.可設置前綴。

3.強制超時控制。

4.cookies數據可以是字符串,數組,對象等。

Cookies.class.php

<?php  
/** Cookies class 保存,讀取,更新,清除cookies數據。可設置前綴。強制超時。數據可以是字符串,數組,對象等。 
*   Date:   2013-12-22 
*   Author: fdipzone 
*   Ver:    1.0 
* 
*   Func: 
*   public   set        設置cookie 
*   public   get        讀取cookie 
*   public   update     更新cookie 
*   public   clear      清除cookie 
*   public   setPrefix  設置前綴 
*   public   setExpire  設置過期時間 
*   private  authcode   加密/解密 
*   private  pack       將數據打包 
*   private  unpack     將數據解包 
*   private  getName    獲取cookie name,增加prefix處理 
*/
      
class Cookies{ // class start  
      
    private $_prefix = '';                                                  // cookie prefix  
    private $_securekey = 'ekOt4_Ut0f3XE-fJcpBvRFrg506jpcuJeixezgPNyALm';   // encrypt key  
    private $_expire = 3600;                                                // default expire  
      
      
    /** 初始化 
    * @param String $prefix     cookie prefix 
    * @param int    $expire     過期時間 
    * @param String $securekey  cookie secure key 
    */
    public function __construct($prefix='', $expire=0, $securekey=''){  
      
        if(is_string($prefix) && $prefix!=''){  
            $this->_prefix = $prefix;  
        }  
      
        if(is_numeric($expire) && $expire>0){  
            $this->_expire = $expire;  
        }  
      
        if(is_string($securekey) && $securekey!=''){  
            $this->_securekey = $securekey;  
        }  
      
    }  
      
      
    /** 設置cookie 
    * @param String $name   cookie name 
    * @param mixed  $value  cookie value 可以是字符串,數組,對象等 
    * @param int    $expire 過期時間 
    */
    public function set($name, $value, $expire=0){  
      
        $cookie_name = $this->getName($name);  
        $cookie_expire = time() + ($expire? $expire : $this->_expire);  
        $cookie_value = $this->pack($value, $cookie_expire);  
        $cookie_value = $this->authcode($cookie_value, 'ENCODE', $this->_securekey);  
      
        if($cookie_name && $cookie_value && $cookie_expire){  
            setcookie($cookie_name, $cookie_value, $cookie_expire);  
        }  
      
    }  
      
      
    /** 讀取cookie 
    * @param  String $name   cookie name 
    * @return mixed          cookie value 
    */
    public function get($name){  
      
        $cookie_name = $this->getName($name);  
      
        if(isset($_COOKIE[$cookie_name])){  
      
            $cookie_value = $this->authcode($_COOKIE[$cookie_name], 'DECODE', $this->_securekey);  
            $cookie_value = $this->unpack($cookie_value);  
      
            return isset($cookie_value[0])? $cookie_value[0] : null;  
      
        }else{  
            return null;  
        }  
      
    }  
      
      
    /** 更新cookie,只更新內容,如需要更新過期時間請使用set方法 
    * @param  String $name   cookie name 
    * @param  mixed  $value  cookie value 
    * @return boolean 
    */
    public function update($name, $value){  
      
        $cookie_name = $this->getName($name);  
      
        if(isset($_COOKIE[$cookie_name])){  
      
            $old_cookie_value = $this->authcode($_COOKIE[$cookie_name], 'DECODE', $this->_securekey);  
            $old_cookie_value = $this->unpack($old_cookie_value);  
      
            if(isset($old_cookie_value[1]) && $old_cookie_vlaue[1]>0){ // 獲取之前的過期時間  
      
                $cookie_expire = $old_cookie_value[1];  
      
                // 更新數據  
                $cookie_value = $this->pack($value, $cookie_expire);  
                $cookie_value = $this->authcode($cookie_value, 'ENCODE', $this->_securekey);  
      
                if($cookie_name && $cookie_value && $cookie_expire){  
                    setcookie($cookie_name, $cookie_value, $cookie_expire);  
                    return true;  
                }  
      
            }  
      
        }  
      
        return false;  
      
    }  
      
      
    /** 清除cookie 
    * @param  String $name   cookie name 
    */
    public function clear($name){  
      
        $cookie_name = $this->getName($name);  
        setcookie($cookie_name);  
      
    }  
      
      
    /** 設置前綴 
    * @param String $prefix cookie prefix 
    */
    public function setPrefix($prefix){  
      
        if(is_string($prefix) && $prefix!=''){  
            $this->_prefix = $prefix;  
        }  
      
    }  
      
      
    /** 設置過期時間 
    * @param int $expire cookie expire 
    */
    public function setExpire($expire){  
      
        if(is_numeric($expire) && $expire>0){  
            $this->_expire = $expire;  
        }  
      
    }  
      
      
    /** 獲取cookie name 
    * @param  String $name 
    * @return String 
    */
    private function getName($name){  
        return $this->_prefix? $this->_prefix.'_'.$name : $name;  
    }  
      
      
    /** pack 
    * @param  Mixed  $data      數據 
	查看本欄目
		
							
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved