Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于后台勋章中心,设置勋章领取权限时使用扩展积分等于数值时,前台勋章列表...

[复制链接]
heartjump 发表于 2012-6-20 18:07:58 | 显示全部楼层 |阅读模式
本帖最后由 heartjump 于 2012-6-21 05:07 编辑

关于后台勋章中心,设置勋章领取权限时使用扩展积分等于数值时,前台勋章列表,不显示的BUG

今天一个以前的同事跟我说,勋章开启第11个时候不显示了,白屏。。。。。

我看一下,发现问题如下:

在后台勋章中心启用任何一个勋章,在详情里边设置勋章领取权限,使用扩展积分 = 某值的时候

如:extcredits2 = 222

前台勋章列表显示任何内容,页面不提示任何错误。

查看后找到问题在于/source/function/function_forum.php中的medalformulaperm函数

在执行到  
  1. @eval("\$formulaperm = ($formula) ? TRUE : FALSE;");
复制代码
这行的时候,默认程序中止,且不提示任何错误

ECHO EVAL的内容为:
  1. $formulaperm = (getuserprofile('extcredits2') = 222) ? TRUE : FALSE;
复制代码
程序到此无法继续执行了。原因是因为getuserprofile('extcredits2') = 222错误


我做了如下修改调整好了这个问题。
  1. 在 @eval("\$formulaperm = ($formula) ? TRUE : FALSE;");前一行增加如下代码进行过滤,如下:
复制代码
  1. preg_match_all("/getuserprofile\('extcredits[1-8]'\)\s+=\s+\d/", $formula, $match);
  2. if($match[0]) {$formula        = str_replace("=", "==", $formula);}
复制代码






紫色的回忆 发表于 2012-6-21 08:41:34 | 显示全部楼层
哈哈,这个太棒啦!
回复

使用道具 举报

pcyi 发表于 2012-6-21 09:42:21 | 显示全部楼层
这个问题真是太纠结了
回复

使用道具 举报

泥豌豆 发表于 2012-6-21 13:10:55 | 显示全部楼层
一直没好好利用勋章系统
回复

使用道具 举报

m.king 发表于 2012-6-21 14:36:50 | 显示全部楼层
你用的是哪个版本的程序啊?
回复

使用道具 举报

 楼主| heartjump 发表于 2012-6-23 13:06:38 | 显示全部楼层
Discuz! X2
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-2-25 15:04 , Processed in 0.028015 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表