php处理cookie生成、删除、获取、函数
这是处理cookie的函数,包括设置、获取、删除cookie等操作。多参数设置,方便灵活使用。还函数来源ThinkPHP
函数
可对配置进行修改,符合自己的需求
/** * Cookie 设置、获取、删除 * @param string $name cookie名称 * @param mixed $value cookie值 * @param mixed $option cookie参数 * @return mixed */ function cookie($name='', $value='', $option=null) { ob_start(); // 默认设置 $config = array( 'prefix' => 'jianbaizhan_', // cookie 名称前缀 'expire' => 0, // cookie 保存时间 'path' => '/', // cookie 保存路径 'domain' => '', // 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)) return null; // 要删除的cookie前缀,不指定则删除config设置的指定前缀 $prefix = empty($value) ? $config['prefix'] : $value; if (!empty($prefix)) {// 如果前缀为空字符串将不作处理直接返回 foreach ($_COOKIE as $key => $val) { if (0 === stripos($key, $prefix)) { setcookie($key, '', time() - 3600, $config['path'], $config['domain']); unset($_COOKIE[$key]); } } } return null; }elseif('' === $name){ // 获取全部的cookie return $_COOKIE; } $name = $config['prefix'] . str_replace('.', '_', $name); if ('' === $value) { if(isset($_COOKIE[$name])){ $value = $_COOKIE[$name]; if(0===strpos($value,'jianbaizhan:')){ $value = substr($value,6); return array_map('urldecode',json_decode(MAGIC_QUOTES_GPC?stripslashes($value):$value,true)); }else{ return $value; } }else{ return null; } } else { if (is_null($value)) { setcookie($name, '', time() - 3600, $config['path'], $config['domain']); unset($_COOKIE[$name]); // 删除指定cookie } else { // 设置cookie if(is_array($value)){ $value = 'jianbaizhan:'.json_encode(array_map('urlencode',$value)); } $expire = !empty($config['expire']) ? time() + intval($config['expire']) : 0; setcookie($name, $value, $expire, $config['path'], $config['domain']); $_COOKIE[$name] = $value; } } ob_end_flush(); return null; }
设置cookie
cookie('name','value'); //设置cookie cookie('name','value',3600); // 指定cookie保存时间
更多参数1
cookie('name','value',array('expire'=>3600,'prefix'=>'jian_'))
更多参数2
cookie('name','value','expire=3600&prefix=jian_')
获取cookie
$value = cookie('name');
获取带前缀参数
echo cookie('name','','prefix=jian_');
删除cookie
cookie('name',null); //删除单一cookie
cookie(null); // 清空当前设定前缀的所有cookie值
cookie(null,'jian_'); // 清空指定前缀的所有cookie值
本文作者: Liaodeity
本文链接: https://www.jianbaizhan.com/article/265
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!