Ver código fonte

优化语言获取和加载

Karson 3 anos atrás
pai
commit
1a07280f79

+ 1 - 1
application/admin/command/Api/template/index.html

@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-<html lang="{$config.language}">
+<html>
     <head>
         <meta charset="utf-8">
         <meta http-equiv="X-UA-Compatible" content="IE=edge">

+ 14 - 3
application/common/behavior/Common.php

@@ -9,6 +9,12 @@ use think\Loader;
 class Common
 {
 
+    public function appInit()
+    {
+        $allowLangList = Config::get('allow_lang_list') ?? ['zh-cn', 'en'];
+        Lang::setAllowLangList($allowLangList);
+    }
+
     public function appDispatch(&$dispatch)
     {
         $pathinfoArr = explode('/', request()->pathinfo());
@@ -56,8 +62,11 @@ class Common
             Config::set('app_trace', false);
         }
         // 切换多语言
-        if (Config::get('lang_switch_on') && $request->get('lang')) {
-            \think\Cookie::set('think_var', $request->get('lang'));
+        if (Config::get('lang_switch_on')) {
+            $lang = $request->get('lang');
+            if (preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang)) {
+                \think\Cookie::set('think_var', $lang);
+            }
         }
         // Form别名
         if (!class_exists('Form')) {
@@ -68,8 +77,10 @@ class Common
     public function addonBegin(&$request)
     {
         // 加载插件语言包
+        $lang = request()->langset();
+        $lang = preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang) ? $lang : 'zh-cn';
         Lang::load([
-            APP_PATH . 'common' . DS . 'lang' . DS . $request->langset() . DS . 'addon' . EXT,
+            APP_PATH . 'common' . DS . 'lang' . DS . $lang . DS . 'addon' . EXT,
         ]);
         $this->moduleInit($request);
     }

+ 3 - 1
application/common/controller/Api.php

@@ -153,7 +153,9 @@ class Api
     protected function loadlang($name)
     {
         $name = Loader::parseName($name);
-        Lang::load(APP_PATH . $this->request->module() . '/lang/' . $this->request->langset() . '/' . str_replace('.', '/', $name) . '.php');
+        $lang = $this->request->langset();
+        $lang = preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang) ? $lang : 'zh-cn';
+        Lang::load(APP_PATH . $this->request->module() . '/lang/' . $lang . '/' . str_replace('.', '/', $name) . '.php');
     }
 
     /**

+ 5 - 2
application/common/controller/Backend.php

@@ -190,7 +190,8 @@ class Backend extends Controller
         }
 
         // 语言检测
-        $lang = strip_tags($this->request->langset());
+        $lang = $this->request->langset();
+        $lang = preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang) ? $lang : 'zh-cn';
 
         $site = Config::get("site");
 
@@ -236,7 +237,9 @@ class Backend extends Controller
     protected function loadlang($name)
     {
         $name = Loader::parseName($name);
-        Lang::load(APP_PATH . $this->request->module() . '/lang/' . $this->request->langset() . '/' . str_replace('.', '/', $name) . '.php');
+        $lang = $this->request->langset();
+        $lang = preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang) ? $lang : 'zh-cn';
+        Lang::load(APP_PATH . $this->request->module() . '/lang/' . $lang . '/' . str_replace('.', '/', $name) . '.php');
     }
 
     /**

+ 6 - 3
application/common/controller/Frontend.php

@@ -88,7 +88,8 @@ class Frontend extends Controller
         $this->view->assign('user', $this->auth->getUser());
 
         // 语言检测
-        $lang = strip_tags($this->request->langset());
+        $lang = $this->request->langset();
+        $lang = preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang) ? $lang : 'zh-cn';
 
         $site = Config::get("site");
 
@@ -126,8 +127,10 @@ class Frontend extends Controller
      */
     protected function loadlang($name)
     {
-        $name =  Loader::parseName($name);
-        Lang::load(APP_PATH . $this->request->module() . '/lang/' . $this->request->langset() . '/' . str_replace('.', '/', $name) . '.php');
+        $name = Loader::parseName($name);
+        $lang = $this->request->langset();
+        $lang = preg_match("/^([a-zA-Z\-_]{2,10})\$/i", $lang) ? $lang : 'zh-cn';
+        Lang::load(APP_PATH . $this->request->module() . '/lang/' . $lang . '/' . str_replace('.', '/', $name) . '.php');
     }
 
     /**

+ 4 - 2
application/config.php

@@ -47,6 +47,8 @@ return [
     'default_filter'         => '',
     // 默认语言
     'default_lang'           => 'zh-cn',
+    // 默认语言
+    'allow_lang_list'        => ['zh-cn', 'en'],
     // 应用类库后缀
     'class_suffix'           => false,
     // 控制器类后缀
@@ -264,7 +266,7 @@ return [
         //会员注册验证码类型email/mobile/wechat/text/false
         'user_register_captcha' => 'text',
         //登录验证码
-        'login_captcha'         => true,
+        'login_captcha'         => false,
         //登录失败超过10次则1天后重试
         'login_failure_retry'   => true,
         //是否同一账号同一时间只能在一个地方登录
@@ -294,7 +296,7 @@ return [
         //允许跨域的域名,多个以,分隔
         'cors_request_domain'   => 'localhost,127.0.0.1',
         //版本号
-        'version'               => '1.3.3.20220121',
+        'version'               => '1.3.4.20220527',
         //API接口地址
         'api_url'               => 'https://api.fastadmin.net',
     ],