mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-07 23:22:48 +08:00
Update cookie.php
// 设置cookie
if (is_array($value)) {
$value = 'think:' . json_encode(array_map('urlencode', $value));
}
这里如果$value为多维数组时,代码就不能正确执行。所以建议换成array_walk_recursive函数来处理。
当$value是多维数组时,这段代码就不能正确运行。
This commit is contained in:
@@ -82,7 +82,8 @@ class Cookie
|
|||||||
$name = $config['prefix'] . $name;
|
$name = $config['prefix'] . $name;
|
||||||
// 设置cookie
|
// 设置cookie
|
||||||
if (is_array($value)) {
|
if (is_array($value)) {
|
||||||
$value = 'think:' . json_encode(array_map('urlencode', $value));
|
array_walk_recursive($value, $this->jsonFormatProtect, 'encode');
|
||||||
|
$value = 'think:' . json_encode($value);
|
||||||
}
|
}
|
||||||
$expire = !empty($config['expire']) ? time() + intval($config['expire']) : 0;
|
$expire = !empty($config['expire']) ? time() + intval($config['expire']) : 0;
|
||||||
setcookie($name, $value, $expire, $config['path'], $config['domain'], $config['secure'], $config['httponly']);
|
setcookie($name, $value, $expire, $config['path'], $config['domain'], $config['secure'], $config['httponly']);
|
||||||
@@ -103,10 +104,10 @@ class Cookie
|
|||||||
$value = $_COOKIE[$name];
|
$value = $_COOKIE[$name];
|
||||||
if (0 === strpos($value, 'think:')) {
|
if (0 === strpos($value, 'think:')) {
|
||||||
$value = substr($value, 6);
|
$value = substr($value, 6);
|
||||||
return array_map('urldecode', json_decode($value, true));
|
$value = json_decode(MAGIC_QUOTES_GPC ? stripslashes($value) : $value, true);
|
||||||
} else {
|
array_walk_recursive($value, $this->jsonFormatProtect, 'decode');
|
||||||
return $value;
|
|
||||||
}
|
}
|
||||||
|
return $value;
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -156,4 +157,12 @@ class Cookie
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static function jsonFormatProtect(&$val, $key, $type = 'encode')
|
||||||
|
{
|
||||||
|
if (!empty($val) && true !== $val) {
|
||||||
|
$val = 'decode' == $type ? urldecode($val) : urlencode($val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user