QQ咨询 官方微信

添加微信好友

官方小程序

百度小程序

微信小程序

头条小程序

关于我们

Pbootcms

pbootcms自定义url中当数字开头的时候出现读取混乱的bug

 shitouadmin  2024-12-12 10:54:21
在使用pbootcms的自定义url的时候,自定义的url如何是字母或者字母+数字都不会出现问题,但是当是数字+字母,并且这个数字和ID重复的的时候,就会有可能出现读取错误,例如:30和30a
原因就是sql读取的时候,默认优先匹配id,此时30a就会被隐式转换就会变成30,造成30和30a出现相同的内容。
解决办法:找到文件apps/home/model/ParserModel.php
找到代码(大概614行)
  1. $result = parent::table('ay_content a')->field($field) 
  2.             ->where("a.scode='$scode' OR b.filename='$scode'"
  3.             ->where('a.status=1'
  4.             ->join($join) 
  5.             ->decode() 
  6.             ->order('id DESC'
  7.             ->find(); 

改成:

  1. $where = is_numeric($id) ? "a.id='$id' OR a.filename='$id'" : "a.filename='$id'"; 
  2. $result = parent::table('ay_content a')->field($field) 
  3.        ->where($where
  4.        ->where('a.status=1'
  5.        ->where("a.date<'" . date('Y-m-d H:i:s') . "'") 
  6.        ->join($join) 
  7.        ->decode() 
  8.        ->find(); 

(红色文字即为改动部分)

原理:
就是对id进行判断,如果是数字的时候则进行id读取判断,否则进行filename判断。
但是这种做法有个缺点:如果当用户吧自定义url的设置为纯数字,并且和已有ID重复,仍旧会出现读取混乱情况,所以自定义url要避免使用纯数字,具体需要等官方修复

 

¥ 打赏
×
如果您觉得文章帮助了您就打赏一下吧
非常感谢你的打赏,我们将继续分享更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

本文《pbootcms自定义url中当数字开头的时候出现读取混乱的bug》发布于石头博客文章,作者:shitouadmin,如若转载,请注明出处:https://www.pweb123.com/cms/pbootcms/1043.html,否则禁止转载,谢谢配合!

文章点评

我来说两句 已有0条评论
点击图片更换

添加微信好友

添加微信好友

微信小程序

百度小程序