<?php header('content-type:text/html;charset=utf-8');/** * 完成cookie的设置、删除、更新、读取 */class Cookie{ private static $instance=null; private $expire=0;//过期时间 单位为s 默认是会话 关闭浏览器就不在存在 private $path='';//路径 默认在本目录及子目录下有效 /表示根目录下有效 private $domain='';//域 private $secure=false;//是否只在https协议下设置默认不是 private $httponly=false;//如果为TRUE,则只能通过HTTP协议访问cookie。 这意味着脚本语言(例如JavaScript)无法访问cookie /** * [__construct description] * 构造函数完成cookie参数初始化工作 * @DateTime 2018-07-25T09:50:51+0800 * @param array $options [cookie相关选项] */ private function __construct(array $options=[]){ $this->getOptions($options); } private function getOptions(array $options=[]){ if(isset($options['expire'])) {$this->expire=$options['expire'];} if(isset($options['path'])) $this->path=$options['path']; if(isset($options['domain'])) $this->domain=$options['domain']; if(isset($options['secure'])) $this->secure=$options['secure']; if(isset($options['httponly'])) $this->httponly=$options['httponly']; return $this; } /** * [getInstance description] * 单例模式 * @DateTime 2018-07-25T09:50:01+0800 * @param array $options [cookie相关选项] * @return object $options [对象实例] */ public static function getInstance(array $options=[]){ if(is_null(self::$instance)){ $class=__CLASS__; self::$instance=new $class($options); } return self::$instance; } /** * 设置cookie * Func description * @DateTime 2018-07-25T09:42:37+0800 * @param [string] $name [cookie名称] * @param [mixed] $vlaue [cookie值] * @param array $options [cookie相关选项] */ public function set($name,$value,array $options=[]){ if(is_array($options)&&count($options)>0){ $this->getOptions($options); } if(is_array($value)||is_object($value)){ $value=json_encode($value); var_dump($value); } setcookie($name,$value,$this->expire,$this->path,$this->domain,$this->secure,$this->httponly); } /** * [get description] * 读取cookie值 * @DateTime 2018-07-25T11:34:04+0800 * @param [string] $name [cookie名称] * @return [mixed] [数组形式的值或者单个的值] */ public function get($name){ $value=$_COOKIE[$name]; if(is_array($value)){ $arr=[]; foreach ($value as $k => $v) { # code... $arr[$k]=substr($v, 0,1)=='{'? json_decode($value):$v; } return $arr; }else{ return substr($value, 0,1)=='{'? json_decode($value):$value;} } /** * [delete description] * 删除相应的cookie * @DateTime 2018-07-25T11:53:24+0800 * @param [string] $name [cookie名称 可以是数组] * @param array $options [cookie相关参数] * @return [type] [description] */ public function delete($name,array $options=[]){ if(is_array($options)&&count($options)>0){ $this->getOptions($options); } $value=$_COOKIE[$name]; if($value){ if(is_array($value)){ foreach ($value as $k => $v) { # code... setcookie($name.'['.$k.']','',time()-1,$this->path,$this->domain,$this->secure,$this->httponly); unset($v); } }else{ setcookie($name,'',time()-1,$this->path,$this->domain,$this->secure,$this->httponly); unset($value); } } }}$cookie=Cookie::getInstance();//$cookie->set('aaaa','bb');//$cookie->set('bb','bb',['expire'=>time()+3600,'path'=>'/','domain'=>'localhost','secure'=>false,'httponly'=>true]);//$cookie->set('admin',['name'=>'张三','age'=>20]);//$cookie->set('user[name]','李四');//$cookie->set('user[age]',25);//var_dump($_COOKIE['user']);$cookie->delete('user');如有不全面的地方,欢迎大家指正。
转载于:https://www.cnblogs.com/zaoa/p/9365431.html
相关资源:各显卡算力对照表!