最新最全的移动资源,海量教程攻略!

网站首页 > 技术支持 > discuz > discuz使用教程 > Discuz! X 个人资料页“最新记录”错乱(显示别人的记录)的解决办法最新

Discuz! X 个人资料页“最新记录”错乱(显示别人的记录)的解决办法最新

作者: 资源猫 时间: 2020-03-08 20:15:14 人气: 8

1、在模板 home/space_profile_body.htm 中查找到“最新记录”的变量为 $space[spacenote] ;
2、在 source/include/space/space_profile.php 中排查到该变量由第17行的代码控制:
space_merge($space, 'field_home');
3、查找到 space_merge 函数在 source/function/function_core.php 中创建;
4、排查到“最新记录”由该函数中以下代码获得:
$_G[$var] = C::t('common_member_'.$tablename.$ext)- fetch($uid))
5、结合第2、4条,找到 source/class/table/table_common_member_field_home.php 进一步排查。
到这一步没发现任何问题,莫非问题并非出现在读取过程中?
6、进入数据库,查看 common_member_field_home 表,发现数据库中该用户的“spacenote”内容是别人发布的,证实并非是读取数据时的错误,而是写入的数据存在问题;
7、发表记录由 source/include/spacecp/spacecp_doing.php 处理,经排查暂未发现问题,不过限于时间关系未深入研究,有空的高手可以去看看。
最后怎么解决呢?
已知 $space[spacenote] 是从 common_member_field_home 表中获取的,而该表中的spacenote数据可能存在问题,那我们直接去 pre_home_doing 表中取该用户的最后一条记录就好了。修改办法:
打开 source/include/space/space_profile.php ,查找:
if($space['videophoto'] ckvideophoto($space, 1)) {
在其前方增加一行:
if($do == 'profile') $space['spacenote'] = DB::result_first( select message from .DB::table('home_doing'). where uid= .$space['uid']. order by doid desc

感谢访问资源猫吧,本站所有资源均来自互联网或用户分享,如您发现本站存在侵权或违规内容,请来邮件告知我们! 资源分享/侵权下架/商务合作联系邮箱:qiazou77ziyuan@126.com