diff --git a/convention.php b/convention.php index 42371075..73ec395b 100644 --- a/convention.php +++ b/convention.php @@ -72,6 +72,10 @@ return [ // URL模块映射 'url_module_map' => [], + // 默认输出类型 + 'default_return_type' => 'html', + // 默认语言 + 'default_lang' => 'zh-cn', // +---------------------------------------------------------------------- // | 视图及模板设置 // +---------------------------------------------------------------------- @@ -113,12 +117,15 @@ return [ 'prefix' => '', 'expire' => 0, ], + // 是否使用session + 'use_session' => true, // +---------------------------------------------------------------------- // | 会话设置 // +---------------------------------------------------------------------- 'session' => [ + 'id' => '', 'prefix' => 'think', 'type' => '', 'auto_start' => true, diff --git a/library/think/cookie.php b/library/think/cookie.php index 6ab2a9fe..8ab69af9 100644 --- a/library/think/cookie.php +++ b/library/think/cookie.php @@ -82,7 +82,8 @@ class Cookie $name = $config['prefix'] . $name; // 设置cookie 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; setcookie($name, $value, $expire, $config['path'], $config['domain'], $config['secure'], $config['httponly']); @@ -103,10 +104,10 @@ class Cookie $value = $_COOKIE[$name]; if (0 === strpos($value, 'think:')) { $value = substr($value, 6); - return array_map('urldecode', json_decode($value, true)); - } else { - return $value; + $value = json_decode(MAGIC_QUOTES_GPC ? stripslashes($value) : $value, true); + array_walk_recursive($value, $this->jsonFormatProtect, 'decode'); } + return $value; } else { return null; } @@ -156,4 +157,12 @@ class Cookie } return; } + + private static function jsonFormatProtect(&$val, $key, $type = 'encode') + { + if (!empty($val) && true !== $val) { + $val = 'decode' == $type ? urldecode($val) : urlencode($val); + } + } + } diff --git a/library/think/session.php b/library/think/session.php index 6f4b1fbf..b3f69cb6 100644 --- a/library/think/session.php +++ b/library/think/session.php @@ -39,7 +39,7 @@ class Session if (isset($config['prefix'])) { self::$prefix = $config['prefix']; } - if (isset($config['id'])) { + if (isset($config['id']) && !empty($config['id'])) { session_id($config['id']); } if (isset($config['name'])) {