加入收藏 | 设为首页 | 会员中心 | 我要投稿 惠州站长网 (https://www.0752zz.com.cn/)- 办公协同、云通信、物联设备、操作系统、高性能计算!
当前位置: 首页 > 教程 > 正文

php实现的Cookies操作类实例

发布时间:2022-06-22 09:02:33 所属栏目:教程 来源:互联网
导读:这篇文章主要介绍了php实现的Cookies操作类及其用法实例,包括了常见了保存、读

    }  
     
    /** 清除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   数据  
    * @param int  $expire  过期时间 用于判断  
    * @return  
    */
    private function pack($data, $expire){  
     
      if($data===''){  
        return '';  
      }  
     
      $cookie_data = array();  
      $cookie_data['value'] = $data;  
      $cookie_data['expire'] = $expire;  
      return json_encode($cookie_data);  
    }  
     
    /** unpack  
    * @param Mixed $data 数据  
    * @return       array(数据,过期时间)  
    */
    private function unpack($data){  
     
      if($data===''){  
        return array('', 0);  
      }  
     
      $cookie_data = json_decode($data, true);  
     
      if(isset($cookie_data['value']) && isset($cookie_data['expire'])){  
     
        if(time()<$cookie_data['expire']){ // 未过期  
          return array($cookie_data['value'], $cookie_data['expire']);  
        }  
      }  
      return array('', 0);  
    }  
     
    /** 加密/解密数据  
    * @param String $str    原文或密文  
    * @param String $operation ENCODE or DECODE  
    * @return String      根据设置返回明文活密文  
    */
    private function authcode($string, $operation = 'DECODE'){  
     
      $ckey_length = 4;  // 随机密钥长度 取值 0-32;  
     
      $key = $this->_securekey;  
     
      $key = md5($key);  
      $keya = md5(substr($key, 0, 16));  
      $keyb = md5(substr($key, 16, 16));  
      $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
     
      $cryptkey = $keya.md5($keya.$keyc);  
      $key_length = strlen($cryptkey);  
     
      $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', 0).substr(md5($string.$keyb), 0, 16).$string;  
      $string_length = strlen($string);  
     
      $result = '';  
      $box = range(0, 255);  
     
      $rndkey = array();  
      for($i = 0; $i <= 255; $i++) {  
        $rndkey[$i] = ord($cryptkey[$i % $key_length]);  
      }  
     
      for($j = $i = 0; $i < 256; $i++) {  
        $j = ($j + $box[$i] + $rndkey[$i]) % 256;  
        $tmp = $box[$i];  
        $box[$i] = $box[$j];  
        $box[$j] = $tmp;  
      }  
     
      for($a = $j = $i = 0; $i < $string_length; $i++) {  
        $a = ($a + 1) % 256;  
        $j = ($j + $box[$a]) % 256;  
        $tmp = $box[$a];  
        $box[$a] = $box[$j];  
        $box[$j] = $tmp;  
        $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));  
      }  
     
      if($operation == 'DECODE') {  
        if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {  
          return substr($result, 26);  
        } else {  
          return '';  
        }  
      } else {  
        return $keyc.str_replace('=', '', base64_encode($result));  
      }  //www.phpfensi.com

(编辑:惠州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读