子枫辅助网是全网最火爆最大的辅助网,每天更新原创辅助资源。请记住本站唯一域名:www.wuaif.com
emlog文章标签缓存出错问题修复教程
emlog教程 2020-01-01 05:00:00 659 3

晗枫在制作获取文章页下所有标签的时候发现一个BUG,某些文章页下的标签获取的不完全而且也有可能获取不到,这一问题经过晗枫的排查,问题出现在emlog缓存函数中,目前无人发现此BUG并修复的,下面晗枫教给大家如何来修复这些问题。

此问题晗枫测试emlog5.3.1和emlog老司机版本6.0.1出现此问题,其它版本还没做测试,如果是官方默认版应该都有此问题,下面给大家看下截图。

Emlog老司机6.0.1版本缓存标签函数截图

emlog文章标签缓存出错问题修复教程

Emlog5.3.1版本缓存标签函数截图

emlog文章标签缓存出错问题修复教程

如此可见,emlog老司机6.0.1版本获取标签的代码中是从另一个缓存导入的文章id,这个导入文章的id是“newlog”,这个名称是获取文章列表页文章缓存的名称,经测试,如果在emlog后台系统设置中修改每页显示多少篇文章,这个获取标签的代码也会显示多少篇的,在这个篇数以后的文章并不会获取到任何标签,这不知道是不是老司机为了使emlog程序加快运行而修改的。

emlog6.0.1老司机版本缓存标签函数的修复方法就是找到emlog官方版5.3.1版本的此函数替换即可,但是,emlog5.3.1中的获取标签数据表的语句也有错误,这使得此函数在emlog6.0.1中使用还是无法获取到全部的标签,接下来晗枫写一下修复代码。

大家找到此路径修改文件:根目录/include/lib/cache.php

错误的代码:
$tquery = "SELECT tagname,tid FROM " . DB_PREFIX . "tag WHERE gid LIKE '%,$logid,%' " ;
修复的代码:
$tquery = "SELECT tagname,tid FROM " . DB_PREFIX . "tag WHERE gid LIKE '%,$logid,%' or gid LIKE '%,$logid%' or gid LIKE '%$logid,%' or gid LIKE '$logid'";

错误表现在sql语句中的LIKE截取代码

在tag数据表中emlog老司机6.0.1版本的数据为(1,2,3,4,5,6,7,8,9)

emlog5.3.1版本的数据为(,1,2,3,4,5,6,7,8,9)

可见emlog6.0.1的数据比emlog5.3.1的数据前面多了一个逗号,这使得这段获取数据的代码出错,LIKE后的 %,$logid,% 实际匹配的是数据中必须前后都有逗号的标签,利用到emlog6.0.1中并不会获取到1和9,emlog5.3.1也获取不到9,所以在使用中大家也没有注意文章到底少没少标签。

接下来介绍一下修复代码都是什么意思:

%,$logid% 是获取id前面有逗号的标签

%$logid,% 是获取id后面有逗号的标签

$logid 单独一个$logid是获取前后没有逗号的标签

中间用or逻辑运算符连接,就是匹配到的标签都会显示出来

这样就将每个文章所有的标签都提取出来,就不会导致文章获取标签错误的情况了。

文章说明
免责声明:
本站提供的一切软件、教程和游戏辅助仅限用于娱乐和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络收集,版权争议与本站无关。您必须在下载后的24个小时之内从您的设备中彻底删除。如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
评论留言

昵称

时光 游客 2020-04-14 11:00 站点放出来 IP+1 回复
晗枫 站长 2020-04-14 11:06 @时光:什么意思? 回复
黑子哥哥 游客 2020-04-10 23:32 这个问题纠结了我好一阵子, 我用的是 【网址屏蔽】 回复
个人资料
个人资料
一个热衷于网站制作的小小程序员。
  • 文章2164
  • 评论299
  • 微语7
日历
二零二零年08月
     12
3456789
10111213141516
17181920212223
24252627282930
31