JSON

ThinkPHP源码学习 cookie函数 设置 取值 删除(2)

字号+ 作者:H5之家 来源:H5之家 2017-06-18 14:04 我要评论( )

更一步简化逻辑判断分支 functioncookie($name='',$value='',$option=null){if($option不为空){$option参数分别为整型、字符串、数组代码段$option数组合并到$config数组中去}if($name为空null){$_COOKIE为空返回nu

更一步简化逻辑判断分支

functioncookie($name='',$value='',$option=null){ if($option不为空){ $option参数分别为整型、字符串、数组代码段 $option数组合并到$config数组中去 } if($name为空null){ $_COOKIE为空返回null $prefix不为空删除$prefix的cookie }elseif($name为空字符串){ //获取全部的cookie } $name为某个值 取值 if($value为空字符串){ 取$name的值 }else{ if(is_null($value)){ //删除$name的cookie }else{ 设置cookie } returnnull; }

由上面的逻辑判断if语句可以看出

根据$name=''空字符串(获取全部cookie),

$name=空null, (删除$prefix的cookie)

$name='某个值'(取值|设置值){

$value=''空字符串(取值),

$value=空null(删除$name的cookie),

$value='某个值'(设置值)}

$option 参数 分别为整型、字符串()、数组 三种情况进行设计。
附上Cookie函数(源代码)

/** *Cookie设置、获取、删除 *@paramstring$namecookie名称 *@parammixed$valuecookie值 *@parammixed$optioncookie参数 *@returnmixed */ functioncookie($name='',$value='',$option=null){ //默认设置 $config=array( 'prefix'=>C('COOKIE_PREFIX'),//cookie名称前缀 'expire'=>C('COOKIE_EXPIRE'),//cookie保存时间 'path'=>C('COOKIE_PATH'),//cookie保存路径 'domain'=>C('COOKIE_DOMAIN'),//cookie有效域名 'secure'=>C('COOKIE_SECURE'),//cookie启用安全传输 'httponly'=>C('COOKIE_HTTPONLY'),//httponly设置 ); //参数设置(会覆盖黙认设置) if(!is_null($option)){ if(is_numeric($option)) $option=array('expire'=>$option); elseif(is_string($option)) parse_str($option,$option); $config=array_merge($config,array_change_key_case($option)); } if(!empty($config['httponly'])){ ini_set("session.cookie_httponly",1); } //清除指定前缀的所有cookie if(is_null($name)){ if(empty($_COOKIE)) returnnull; //要删除的cookie前缀,不指定则删除config设置的指定前缀 $prefix=empty($value)?$config['prefix']:$value; if(!empty($prefix)){//如果前缀为空字符串将不作处理直接返回 foreach($_COOKIEas$key=>$val){ if(0===stripos($key,$prefix)){ setcookie($key,'',time()-3600,$config['path'], $config['domain'],$config['secure'],$config['httponly']); unset($_COOKIE[$key]); } } } returnnull; }elseif(''===$name){ //获取全部的cookie return$_COOKIE; } $name=$config['prefix'].str_replace('.','_',$name); if(''===$value){ if(isset($_COOKIE[$name])){ $value=$_COOKIE[$name]; if(0===strpos($value,'think:')){ $value=substr($value,6); returnarray_map('urldecode', json_decode(MAGIC_QUOTES_GPC?stripslashes($value):$value,true)); }else{ return$value; } }else{ returnnull; } }else{ if(is_null($value)){ setcookie($name,'',time()-3600,$config['path'], $config['domain'],$config['secure'],$config['httponly']); unset($_COOKIE[$name]);//删除指定cookie }else{ //设置cookie if(is_array($value)){ $value='think:'.json_encode(array_map('urlencode',$value)); } $expire=!empty($config['expire'])?time()+intval($config['expire']):0; setcookie($name,$value,$expire,$config['path'], $config['domain'],$config['secure'],$config['httponly']); $_COOKIE[$name]=$value; } } returnnull; }


 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评