ThinkPHP的3.2版本有这个问题。比如搜索会员姓名:张。姓张的很多,出来几十页,第一页显示都是姓张的,但翻第二页,或其他页,出来的就乱了,完全不是搜索“张”应该出现的结果。
其实这个问题,核心是编码的问题。具体原理我就不详细说了。
解决办法如下:
要做两处修改,1、修改ThinkPHP\Conf\tags.php,在“app_begin”一项下面加一句:"Getcoding"。即原来是:
'app_begin' => array(
'ReadHtmlCache', // 读取静态缓存
),
改成
'app_begin' => array(
'ReadHtmlCache', // 读取静态缓存
'Getcoding', // 编码
),
2、在ThinkPHP\Lib\Behavior目录下加一个文件:GetcodingBehavior.class.php,内容如下:
<?php
/**
* $_GET 编码解决url中文乱码问题
*
*/
class GetcodingBehavior extends Behavior{
public function run(&$params) {
foreach ($_GET as $k=>$v){
if(!is_array($v)){
if (!mb_check_encoding($v, 'utf-8')){
$_GET[$k] = iconv('gbk', 'utf-8', $v);
}
}else{
foreach ($_GET['_URL_'] as $key=>$value){
if (!mb_check_encoding($value, 'utf-8')){
$_GET['_URL_'][$key] = iconv('gbk', 'utf-8', $value);
}
}
}
}
}
}
好了,关于ThinkPHP解决搜索中文翻页后条件失效的问题,本文就介绍这么多,希望对大家有所帮助!
要饭二维码
洪哥写文章很苦逼,如果本文对您略有帮助,可以扫描下方二维码支持洪哥!金额随意,先行谢过!大家的支持是我前进的动力!

文章的版权
本文属于“洪哥笔记”原创文章,转载请注明来源地址:ThinkPHP解决搜索中文翻页后条件失效的问题:http://www.splaybow.com/post/thinkphp-sousuo-zhongwen-fanye-1148.html
如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:8771947!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D!
发布时间:2017/8/21 7:20:36 | 编辑:洪哥 | 分类:PHP | 浏览: