论坛风格切换切换到宽版
  • 7422阅读
  • 38回复

[分享][8.15测试成功!]自动奖励每日发贴最高的会员插件 [复制链接]

上一主题 下一主题
离线jesscgc
 
发帖
990
金钱
265
威望
35
只看楼主 倒序阅读 使用道具 楼主  发表于: 2006-08-13
这个插件我不是原著,只是修改自Shiyonggang和aileenguan!
主要是解决时间的问题,把缓存方式换成直接读取数据库,这样就不会出现以前所发生的奖励发贴错误!
这个只是测试版,希望大家能提出问题噢!

安装方法一样:下载解压缩之后文件放到根目录下,修改index.php,在require_once('global.php');下面加一句require_once('salary.php');即可,一切就这么简单。

新版本salary.php的代码
  1. <?
  2. /**
  3. 自动发放灌水奖金插件,适用于PW3.0.1 PW4.3 PW4.3.2等各个版本
  4. 作者:aileenguan [url]http://www.mrguan.com[/url]
  5. 更新修改: 来自马来西亚--MyForum论坛jesscgc更新于06-08-13
  6. 更新:直接读取数据库,解决缓存的问题!
  7. **/
  8. require_once("global.php");
  9. $cachefile = "data/bbscache/ifsalary.php";
  10. $j=date("Y-n-j"); //获取当前时间日期
  11. $postdatc=strtotime("$j 23:00:00");//标志位
  12. $timestamp=time();
  13. //A»ODIA¼t’’½¨IA¼t
  14. if(!file_exists($cachefile)){
  15. $cc="<?\n";
  16. $cc.="\$ifsend=0;\n";
  17. $cc.="?>";
  18. writeover($cachefile,$cc);
  19. }
  20. require_once($cachefile);
  21. if($timestamp<$postdatc && $ifsend==1){
  22. $cc="<?\n";
  23. $cc.="\$ifsend=0;\n";
  24. $cc.="?>";
  25. writeover($cachefile,$cc);
  26. }
  27. //判断日期,如果过了今天,且奖金尚未发放.则开始发放程序.
  28. if($timestamp>$postdatc && $ifsend==0){
  29. $sendmoeny;
  30. $query=$db->query("SELECT m.uid,m.username,md.todaypost FROM pw_members m LEFT JOIN pw_memberdata md USING(uid) WHERE md.lastpost>'$tdtime' ORDER BY md.todaypost DESC limit 0,5");
  31. $adminlog="在{$tt}日,获得灌水奖金的名单如下:<br><br>";
  32. $moneylevel=array(50,40,30,20,10); //设定不同排行获得的金钱等,如50为第一名所发奖金,40为第二名.
  33. $rvrclevel=array(50,40,30,20,10); //设定不同排行获得的贡献值等,如50为第一名所发奖金,40为第二名.
  34. $creditlevel=array(30,20,15,10,5); //设定不同排行获得的贡献值等,如30为第一名所发奖金,20为第二名.
  35. $num=0;
  36. while($members=$db->fetch_array($query)){
  37.   $memberid=$members['uid'];
  38.   $membername=$members['username'];
  39.   $db->update("update pw_memberdata set money=money+'$moneylevel[$num]',rvrc=rvrc+'$rvrclevel[$num]', credit=credit+'$creditlevel[$num]' where uid='$memberid'"); //增加金钱+威望+贡献值
  40.   $num=$num+1;  
  41. $adminlog.="第{$num}名:{$membername}<br>奖励金钱:{$moneylevel[$num-1]},奖励威望:{$rvrclevel[$num-1]}, 奖励贡献值:{$creditlevel[$num-1]}<br><br>";
  42.   $subject="第{$num}名的灌水奖金发放!"; //短信标题
  43.   $timestamp=time();
  44.   $sendmessage="由于您在{$tt}日所发的贴子获得了$db_bbsname灌水第{$num}名,奖励金钱{$moneylevel[$num-1]},奖励威望{$rvrclevel[$num-1]},奖励贡献值{$creditlevel[$num-1]},希望您再接再厉,多多交流!";
  45.   $db->update("INSERT INTO pw_msg (touid,fromuid,username,type,ifnew,title,mdate,content) VALUES ('$memberid','','System','rebox','1','$subject','$timestamp','$sendmessage')");
  46.       $db->query("UPDATE pw_members SET newpm=1 where uid='$memberid '");
  47. }      
  48.   $query=$db->query("select uid from pw_members where groupid=3");  
  49. while($admins= $db->fetch_array($query)){
  50.       $adminid=$admins['uid'];
  51.   $subject="系统通知:{$tt}日的灌水奖金发放记录!";
  52.   $timestamp=time();
  53.   $sendmessage=$adminlog;
  54.   $db->update("INSERT INTO pw_msg (touid,fromuid,username,type,ifnew,title,mdate,content) VALUES ('$adminid','','System','rebox','1','$subject','$timestamp','$sendmessage')");
  55.       $db->query("UPDATE pw_members SET newpm=1 where uid='$adminid'");
  56.   }
  57.   $cc="<?\n";
  58.   $cc.="\$ifsend=1;\n";
  59.   $cc.="?>";
  60.   writeover($cachefile,$cc);
  61. }
  62. ?>

注意:8.1=5今天又改了一点东西噢!
测试成功了
[ 此贴被jesscgc在2006-08-15 11:07重新编辑 ]
描述:utf-8版本
附件: salary.rar (2 K) 下载次数:125
描述:GBK版本
附件: salary.rar (2 K) 下载次数:226
4条评分
笨笨啊 威望 +1 - 2006-08-13
汉川水缘 威望 +1 - 2006-08-13
笨笨啊 威望 +1 - 2006-08-13
汉川水缘 威望 +1 - 2006-08-13
离线龙雪影

发帖
1370
金钱
178
威望
87
只看该作者 沙发  发表于: 2006-08-13
沙发```
离线汉川水缘

发帖
4187
金钱
5
威望
377
只看该作者 板凳  发表于: 2006-08-13
顶,支持的!!
离线啊毛。

发帖
14124
金钱
3336
威望
466
只看该作者 3楼 发表于: 2006-08-13
了解一下!
离线jesscgc
发帖
990
金钱
265
威望
35
只看该作者 4楼 发表于: 2006-08-13
如果要换会员奖励的数目,必须在一下这些地方修改:

(一)
$query=$db->query("SELECT m.uid,m.username,md.todaypost FROM pw_members m LEFT JOIN pw_memberdata md USING(uid) WHERE md.lastpost>'$tdtime' ORDER BY md.todaypost DESC limit 0,5");

这句里的“5”就是会员奖励的数目,想要奖励3个会员,就把“5”改成“3”。

(二)
$moneylevel=array(50,40,30,20,10); //设定不同排行获得的金钱等,如50为第一名所发奖金,40为第二名.
$rvrclevel=array(50,40,30,20,10); //设定不同排行获得的贡献值等,如50为第一名所发奖金,40为第二名.
$creditlevel=array(30,20,15,10,5); //设定不同排行获得的贡献值等,如30为第一名所发奖金,20为第二名.

这里可以更改奖励的大小,如果要换人数,直接减少/增加array()里的数目,如$moneylevel=array(50,40,30);就是奖励前3个会员。
离线﹎sκyˊ☆

发帖
17201
金钱
187
威望
804
只看该作者 5楼 发表于: 2006-08-13
演示~~~
离线jesscgc
发帖
990
金钱
265
威望
35
只看该作者 6楼 发表于: 2006-08-13
如果要奖励金钱或则威望等,可以自己修改:

(一)
$moneylevel=array(50,40,30,20,10); //设定不同排行获得的金钱等,如50为第一名所发奖金,40为第二名.
$rvrclevel=array(50,40,30,20,10); //设定不同排行获得的贡献值等,如50为第一名所发奖金,40为第二名.
$creditlevel=array(30,20,15,10,5); //设定不同排行获得的贡献值等,如30为第一名所发奖金,20为第二名.

删掉有关代码!

(二)
$db->update("update pw_memberdata set money=money+'$moneylevel[$num]',rvrc=rvrc+'$rvrclevel[$num]', credit=credit+'$creditlevel[$num]' where uid='$memberid'"); //增加金钱+威望+贡献值

删掉有关代码如想奖励金钱吧了,就改成
$db->update("update pw_memberdata set money=money+'$moneylevel[$num]' where uid='$memberid'");

(三)
$adminlog.="第{$num}名:{$membername}<br>奖励金钱:{$moneylevel[$num-1]},奖励威望:{$rvrclevel[$num-1]}, 奖励贡献值:{$creditlevel[$num-1]}<br><br>";

$sendmessage="由于您在{$tt}日所发的贴子获得了$db_bbsname灌水第{$num}名,奖励金钱{$moneylevel[$num-1]},奖励威望{$rvrclevel[$num-1]},奖励贡献值{$creditlevel[$num-1]},希望您再接再厉,多多交流!";

删掉有关代码如想奖励金钱吧了,就改成
$adminlog.="第{$num}名:{$membername}<br>奖励金钱:{$moneylevel[$num-1]}<br><br>";

$sendmessage="由于您在{$tt}日所发的贴子获得了$db_bbsname灌水第{$num}名,奖励金钱{$moneylevel[$num-1]},希望您再接再厉,多多交流!";
离线jesscgc
发帖
990
金钱
265
威望
35
只看该作者 7楼 发表于: 2006-08-13
引用第5楼﹎sκyˊ☆2006-08-13 14:00发表的“”:
演示~~~


就是跟aileenguan的一样,只是修改了一些,可以参考:http://www.phpwind.net/read-htm-tid-117256-fpage-6.html
离线汉川水缘

发帖
4187
金钱
5
威望
377
只看该作者 8楼 发表于: 2006-08-13
如果不出错就好!等别人测试几天才说!
离线op1203
发帖
11
金钱
175
威望
0
只看该作者 9楼 发表于: 2006-08-13
这个会导致整个页面变成乱码,只要在index.php加上那句语言后。
离线jesscgc
发帖
990
金钱
265
威望
35
只看该作者 10楼 发表于: 2006-08-13
引用第9楼op12032006-08-13 20:17发表的“”:
这个会导致整个页面变成乱码,只要在index.php加上那句语言后。


抱歉,因为我的salary.php是utf-8版本的,现在加入GBK版本应该没问题
离线romeo1981

发帖
470
金钱
7
威望
171
只看该作者 11楼 发表于: 2006-08-13
嗯,这个非常好啊
离线mou

发帖
12254
金钱
2677
威望
1159
只看该作者 12楼 发表于: 2006-08-14
了解一下!
离线东方露白

发帖
2204
金钱
703
威望
129
只看该作者 13楼 发表于: 2006-08-14
增加了什么功能呢
离线jesscgc
发帖
990
金钱
265
威望
35
只看该作者 14楼 发表于: 2006-08-14
大家请注意,今天8.14我又改了东西噢!
昨天测试发现原本这句有问题:if($timestamp>$postdatc && $tt==$postdatc){
因为$tt本来就是一直小过$postdatc的,所以不可能会有奖励!
所以设定另一种编码:if($timestamp>$postdatc && $ifsend==0){
这样如果今天还没奖励($ifsend=0),就进入奖励会员!然后把$ifsend=1,一直过了今天,就恢复$ifsend=0!
不之大这样写对不对,因为我是新手!!! 请大家多多指教!!!
快速回复
限80 字节
温馨提示:欢迎交流讨论,请勿纯表情、纯引用!
 
上一个 下一个