下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、php实现的Cookies操作类实例_ 本文实例讲解并描述了PHP实现的Cookies操作类及其用法,分享给大家供大家参考。具体分析如下: 一、功能: 1.保存,读取,更新,清除cookies数据。 2.可设置前缀。 3.强制超时掌握。 4.cookies数据可以是字符串,数组,对象等。 二、用法: Cookies.class.php类文件如下: ?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666
2、768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191202111221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771
3、78179180181182183184185186187188189190191192193194195196197198199202101202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 ?php /* Cookies class 保存,读取,更新,清除cookies数据。可设置前缀。强制超时。数据可以是字符串,数组,对象等。 * Date: 20
4、21-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,增加prefi
5、x处理 */ 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 se
6、cure key */ public function _construct($prefix=, $expire=0, $securekey=) if(is_string($prefix) $prefix!=) $this-_prefix = $prefix; if(is_numeric($expire) $expire0) $this-_expire = $expire; if(is_string($securekey) $securekey!=) $this-_securekey = $securekey; /* 设置cookie * param String $name cookie n
7、ame * 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-a
8、uthcode($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
9、($_COOKIE$cookie_name) $cookie_value = $this-authcode($_COOKIE$cookie_name, DECODE, $this-_securekey); $cookie_value = $this-unpack($cookie_value); return isset($cookie_value0)? $cookie_value0 : null; else return null; /* 更新cookie,只更新内容,如需要更新过期时间请用法set方法 * param String $name cookie name * param mixe
10、d $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_c
11、ookie_value1) $old_cookie_vlaue10) / 猎取之前的过期时间 $cookie_expire = $old_cookie_value1; / 更新数据 $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,
12、 $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!=)
13、$this-_prefix = $prefix; /* 设置过期时间 * param int $expire cookie expire */ public function setExpire($expire) if(is_numeric($expire) $expire0) $this-_expire = $expire; /* 猎取cookie name * param String $name * return String */ private function getName($name) return $this-_prefix? $this-_prefix._.$name :
14、$name; /* pack * param Mixed $data 数据 * param int $expire 过期时间 用于推断 * return */ private function pack($data, $expire) if($data=) return ; $cookie_data = array(); $cookie_datavalue = $data; $cookie_dataexpire = $expire; return json_encode($cookie_data); /* unpack * param Mixed $data 数据 * return array
15、(数据,过期时间) */ private function unpack($data) if($data=) return array(, 0); $cookie_data = json_decode($data, true); if(isset($cookie_datavalue) isset($cookie_dataexpire) if(time()$cookie_dataexpire) / 未过期 return array($cookie_datavalue, $cookie_dataexpire); return array(, 0); /* 加密/解密数据 * param Strin
16、g $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 = $ck
17、ey_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.$key
18、b), 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
19、= $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,
20、 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示例程序如下: ?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 ?php require Co
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高一学生学习计划
- 好玩的游戏幼儿园户外小班教案
- 公司季度工作计划合集7篇
- 500ta多晶硅、16kta三氯氢硅新建可行性研究报告-图文
- 竞聘卫生演讲稿范文合集7篇
- 国庆阅兵观后感
- 小学五年级教学工作计划大全
- 学生年度学习计划
- 小松机械制造(山东)有限公司HD系列重卡生产项目环评报告表
- 交通安全保证书模板集锦10篇
- 校园自动售货机投标书模板
- Word使用技巧培训课件下载两篇
- 加强对道路交通违法行为的打击力度维护社会秩序
- 初中学生网络安全教育(完美版)课件两篇
- 报价单(报价单模板)
- 2023教学工作检查评估总结
- 铜排设计技术规范
- 英国文学史及选读复习要点总结
- 贵州省贵阳市花溪区2023-2024学年数学三年级第一学期期末联考试题含答案
- 整改回复书样板后边附带图片
- 中小学校园人车分流方案模板
评论
0/150
提交评论