天上人间 发表于 2021-3-23 11:43:44

thinkphp 5.0这个坑大家小心避开

我是从来不用UC的,今天没事下个UC试了一下,死活都出现变量错误

苹果版UC发送的头部标签HTTP_ACCEPT_LANGUAGE是空的
而thinkphp的lang.php文件中有段断码
在201至204行之间
} elseif (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
            // 自动侦测浏览器语言
            preg_match('/^(+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
            $langSet   = $matches

看出问题了没?

isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])这个肯定是存在的,但是UC发的这个是空的
后面thinkphp直接用$matches这就很不合理了,怎么的也要判断一下$matches吧
$matches这个数组很可能就是空的,然后这$matches玩意就下标越界

改成
$langSet   = (isset($matches)&&!empty($matches)) ? strtolower($matches) : 'zh-cn';

另外 THINKPHP的错误模板文件中如果也有这玩意,也一并改一下。

5.0以后的版本有没有我不清楚

辣鸡玩意

义乌论坛 发表于 2021-3-23 11:52:58

帝国 wordpress已经就够了。

ghp18 发表于 2021-3-23 12:08:58

这个就不懂了,还没试过

eltonto 发表于 2021-3-23 12:19:54

uc浏览器?

天上人间 发表于 2021-3-23 13:00:04

eltonto 发表于 2021-3-23 12:19
uc浏览器?

IOS端的UC ,安卓端的不清楚

Google_Adsense 发表于 2021-3-23 13:12:06

你喷错对象了,应该喷UC垃圾,不按规则。
其次才是喷TP,代码不严谨。
其实后面还有更大的隐患,那就是:
以chrome为首的大佬们,要干掉UA,那以后依赖UA的东东,就全部会出问题:ohh::ohh::ohh:

beibeilon 发表于 2021-3-23 13:16:28

哈哈现在很少用了吧

eltonto 发表于 2021-3-23 13:19:02

Google_Adsense 发表于 2021-3-23 13:12
你喷错对象了,应该喷UC垃圾,不按规则。
其次才是喷TP,代码不严谨。
其实后面还有更大的隐患,那就是: ...

如果干掉ua怎么判断用户是什么浏览器呢

当然现在ua伪造的也挺多哈哈

eltonto 发表于 2021-3-23 13:20:08

天上人间 发表于 2021-3-23 13:00
IOS端的UC ,安卓端的不清楚

安卓的uc可以自己选ua,印象里。

衣郎 发表于 2021-3-23 13:31:12

为什么要用UC,全是广告
页: [1]
查看完整版本: thinkphp 5.0这个坑大家小心避开