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); //删除单一cookiecookie(null); // 清空当前设定前缀的所有cookie值
cookie(null,'jian_'); // 清空指定前缀的所有cookie值
本文作者: Liaodeity
本文链接: https://www.jianbaizhan.com/article/265
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
楼主大人写的这么好,还没人来抢楼