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解决搜索中文翻页后条件失效的问题,本文就介绍这么多,希望对大家有所帮助!