• 671阅读
  • 4回复

追踪“评分超时,你不能对此帖进行评分!”(系统组,特殊组,用户组) [复制链接] [手机版]

上一主题 下一主题
离线为你守候
温馨家园,为你守候!

只看楼主 倒序阅读 使用道具 绿 楼主  发表于: 2017-02-05 10:51:46 星期日
—— 管理操作 •  为你守候 从"论坛管理◇家园服务"移动(2017-02-23) ——
后台设置:
论坛模式-界面设置-阅读页
评分时间限制[小时]  0 帖子发表后超过此时间限制其他用户将不能对此帖评分,系统组不受限制,0 为不限制

设置后,进行评分测试,提示信息为:评分超时,你不能对此帖进行评分!

通过提示信息,检索文件,得到:
'pingtime_over'            => '评分超时,你不能对此帖进行评分!',

继续搜索“pingtime_over”,lib/forum/ping.class.php 文件内代码:
  1. function pingCheck($checkType = '') {
  2.         global $db_pingtime,$timestamp,$gp_gptype,$winduid,$windid,$manager,$_G;
  3.         $pids = array_keys($this->postData);
  4.         foreach ($pids as $k => $v) {
  5.             !is_numeric($v) && $pids[$k] = 0;
  6.         }
  7.         foreach ($this->postData as $pid => $post) {
  8.             if ($db_pingtime && $timestamp - $post['postdate'] > $db_pingtime*3600 && $gp_gptype != 'system') {
  9.                 return 'pingtime_over';
  10.             }
  11.             if ($winduid == $post['authorid'] && $checkType == 1 && !CkInArray($windid,$manager)) {
  12.                 return 'masigle_manager';
  13.             }
  14.         }
  15.         if ($checkType == '1' && $_G['markable'] < 2 && $this->isPing($this->tid, $pids)) {
  16.             return 'no_markagain';
  17.         }
  18.         if ($checkType == '2' && $this->isNotPing($this->tid, $pids)) {
  19.             return 'have_not_showping';
  20.         }
  21.         return true;
  22.     }

看样子,是定义了一个评分检测的函数,继续查一查那几个提示信息:

'masigle_manager'      => '抱歉,不能给自己评分',
'no_markagain'             => '你已经评过分了,你所属的用户组没有重复评分的权限.',
'have_not_showping'    => '错误操作,你没有给该帖评分!',

如此看来,这个“系统组不受限制”应该在前面的几行代码之中,细看之下,应该就是:
if ($db_pingtime && $timestamp - $post['postdate'] > $db_pingtime*3600 && $gp_gptype != 'system') {
里的: && $gp_gptype != 'system'

这行代码能理解是什么意思!如果设置了评分时间限制,并且现在的时间减去发帖时间大于后台设置的评分时间限制*3600(因为单位是小时,所以需要乘以3600,转化成秒),并且不是系统组,那么就会提示:评分超时,你不能对此帖进行评分!
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线为你守候
温馨家园,为你守候!

只看该作者 沙发  发表于: 2017-02-05 14:48:40 星期日  点亮(0)
检索$gp_gptype,已知system是系统组,member是用户组,特殊组和默认组(这个一般用不到)是什么?
if ($gp_gptype == 'member') {print <<<EOT
-->
        <li>等级: $gp_grouptitle</li>
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线为你守候
温馨家园,为你守候!

只看该作者 板凳  发表于: 2017-02-05 14:52:21 星期日  点亮(0)
if ($GLOBALS['gp_gptype'] != 'system' && $GLOBALS['gp_gptype'] != 'special')
这个special应该就是特殊组了。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线为你守候
温馨家园,为你守候!

只看该作者 地板  发表于: 2017-02-05 16:28:15 星期日  点亮(0)
global.php
  1. if ($db_refreshtime && SCR != 'register' && str_replace("=",'',$REQUEST_URI) == $lastpath && $onbbstime < $db_refreshtime) {
  2.     !GetCookie('winduser') && $groupid = 'guest';
  3.     $skin = $skinco ? $skinco : $db_defaultstyle;
  4.     Showmsg('refresh_limit');
  5. }

'refresh_limit'    => '论坛设置:刷新不要快于 $GLOBALS[db_refreshtime] 秒',

这个“刷新不要快于 秒”在后台是全局设置,没有例外(用版主进行测试,当然也在限制之列),本来是想加个权限判断,最起码把系统组(管理组)和特殊组排除在外,可研究了几天,这个权限判断不好加,所以今天追踪下这个评分时间限制,看看有没有权限判断的代码可以参考,可测试过后,还是不行,没想到仅仅是5行代码,就没法搞定。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线为你守候
温馨家园,为你守候!

只看该作者 4楼 发表于: 2017-02-05 16:49:49 星期日  点亮(0)
这个权限判断似乎无用,或者有些错乱,比如在第一行加上&& $gp_gptype == 'member'(也就是只有会员组才会限制刷新),会员组跟版主根本就没有受到限制,而改为否定$gp_gptype != 'member'(如果不是会员组才会受到限制),会员组和版主都会受到限制。

实在是搞不懂!算了吧,
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!