国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - php實(shí)現(xiàn)的Cookies操作類實(shí)例

php實(shí)現(xiàn)的Cookies操作類實(shí)例

2020-07-29 15:50shichen2014 PHP教程

這篇文章主要介紹了php實(shí)現(xiàn)的Cookies操作類及其用法實(shí)例,包括了常見了保存、讀取、更新及清除cookie等操作,在需要進(jìn)行cookie操作時(shí)非常具有實(shí)用價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了PHP實(shí)現(xiàn)的Cookies操作類及其用法,分享給大家供大家參考。具體分析如下:

一、功能:

1.保存,讀取,更新,清除cookies數(shù)據(jù)。
2.可設(shè)置前綴。
3.強(qiáng)制超時(shí)控制。
4.cookies數(shù)據(jù)可以是字符串,數(shù)組,對(duì)象等。

二、用法:

Cookies.class.php類文件如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
<?php
/** Cookies class 保存,讀取,更新,清除cookies數(shù)據(jù)。可設(shè)置前綴。強(qiáng)制超時(shí)。數(shù)據(jù)可以是字符串,數(shù)組,對(duì)象等。
*  Date:  2013-12-22
*  Author: fdipzone
*  Ver:  1.0
*
*  Func:
*  public  set    設(shè)置cookie
*  public  get    讀取cookie
*  public  update   更新cookie
*  public  clear   清除cookie
*  public  setPrefix 設(shè)置前綴
*  public  setExpire 設(shè)置過(guò)期時(shí)間
*  private authcode  加密/解密
*  private pack    將數(shù)據(jù)打包
*  private unpack   將數(shù)據(jù)解包
*  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   過(guò)期時(shí)間
  * @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;
    }
 
  }
 
  /** 設(shè)置cookie
  * @param String $name  cookie name
  * @param mixed $value cookie value 可以是字符串,數(shù)組,對(duì)象等
  * @param int  $expire 過(guò)期時(shí)間
  */
  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,只更新內(nèi)容,如需要更新過(guò)期時(shí)間請(qǐng)使用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){ // 獲取之前的過(guò)期時(shí)間
 
        $cookie_expire = $old_cookie_value[1];
 
        // 更新數(shù)據(jù)
        $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);
  }
 
  /** 設(shè)置前綴
  * @param String $prefix cookie prefix
  */
  public function setPrefix($prefix){
 
    if(is_string($prefix) && $prefix!=''){
      $this->_prefix = $prefix;
    }
  }
 
  /** 設(shè)置過(guò)期時(shí)間
  * @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   數(shù)據(jù)
  * @param int  $expire  過(guò)期時(shí)間 用于判斷
  * @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 數(shù)據(jù)
  * @return       array(數(shù)據(jù),過(guò)期時(shí)間)
  */
  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']){ // 未過(guò)期
        return array($cookie_data['value'], $cookie_data['expire']);
      }
    }
    return array('', 0);
  }
 
  /** 加密/解密數(shù)據(jù)
  * @param String $str    原文或密文
  * @param String $operation ENCODE or DECODE
  * @return String      根據(jù)設(shè)置返回明文活密文
  */
  private function authcode($string, $operation = 'DECODE'){
 
    $ckey_length = 4;  // 隨機(jī)密鑰長(zhǎng)度 取值 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));
    }
  }
} // class end
 
?>

demo.php示例程序如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
require 'Cookies.class.php';
 
$type = isset($_GET['type'])? strtolower($_GET['type']) : '';
 
if(!in_array($type, array('set','get','update','clear'))){
  exit('type not exists');
}
 
$obj = new Cookies('member', 10); // obj
 
switch($type){
 
  case 'set': // 設(shè)置
    $data = array(
      'name' => 'fdipzone',
      'gender' => 'male'
    );
    $obj->set('me', $data, 5);
    echo 'set cookies';
    break;
 
  case 'get': // 讀取
    $result = $obj->get('me');
 
    echo '<pre>';
    print_r($result);
    echo '</pre>';
 
    echo 'get cookies';
    break;
 
  case 'update': // 更新
    $data = array(
      'name' => 'angelababy',
      'gender' => 'female'
    );
    $flag = $obj->update('me', $data);
 
    if($flag){
      echo 'update cookies success';
    }else{
      echo 'update cookies false';
    }
 
    break;
 
  case 'clear': // 清除
    $obj->clear('me');
    echo 'clear cookies';
    break;
}
?>

本文完整實(shí)例源碼點(diǎn)擊此處本站下載

希望本文所述對(duì)大家的PHP程序設(shè)計(jì)有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品综合久久 | 亚洲网站免费 | av大片网 | 日韩av成人在线观看 | 国产精品一区二区免费 | 亚洲日韩欧美一区二区在线 | 亚洲精品成人 | 欧美视频二区 | 人人99 | 午夜精品一区二区三区在线视频 | 中文字幕免费 | 国产精品永久 | 亚洲精品乱码久久久久久久久 | 毛片网免费 | 超碰97中文 | 日本一区二区电影 | 国产香蕉视频在线播放 | 免费看毛片的网站 | 精品亚洲一区二区三区四区五区 | 黄色在线免费 | 亚洲国产aⅴ成人精品无吗 黄色免费在线看 | 亚洲不卡视频在线 | 国产亚洲精品美女久久久久久久久久 | 日韩精品视频免费在线观看 | 久久影院免费观看 | 中文字幕日韩一区二区不卡 | 亚洲精品视频在线播放 | 黄色二区 | 日韩在线视频一区 | 欧美日韩国产精品一区二区 | 99精品国产一区二区青青牛奶 | 亚洲欧美高清 | 午夜爱 | 欧美日韩成人一区二区 | 日韩欧美在线视频 | 亚洲成人精品一区 | а天堂中文最新一区二区三区 | 亚洲第一区在线 | 黑人一区| 欧美一级大片免费 | 国产日产久久高清欧美一区 |