互联网 频道

童虎:Discuz! 插件开发实例讲解

  说了这么多了,下面我们来看具体代码,我会把程序中每行代码做解释,希望大家能获得一点启发吧

  require_once '.includecommon.inc.php';

  这行代码就是前面说的 common.inc.php 这个系统核心文件的引用,几乎所有插件都会用到。

  代码如下:

   if(!$discuz_uid) {

  showmessage('not_loggedin', NULL, 'NOPERM');

  }

  这段的含义是当程序发现访问者是游客时,自动会提示无权访问,请登陆的界面,在Discuz! 里面是通过 common.inc.php 做处理,然后给 $discuz_uid 这个变量赋值,当这个变量为空或者为 0 时,程序会认为这个访问者是游客,否则这个变量将被赋值为该会员的 uid 。和这个变量类似的还有 $discuz_user 这个是用于显示会员用户名的,如果为空也说明访问者为游客。

  代码如下:

   $startdate = '2007-02-17';    开始日期,填写格式2007-02-17

  $enddate = '2007-02-24';    结束日期,填写格式2007-02-24

  $joincount = 30;             可以参与抽奖的次数

  $getcredit = 1;             增加扩展积分1~8

  $mincredit = 1;             获得积分的最小值

  $maxcredit = 100;             获得积分的最大值

  这段代码是一些程序里面用到的设置变量,如果你的插件有后台程序可以把这些变量放到后台进行设置,然后写到数据库或者缓存为文件。

  代码如下:

   if(empty($getcredit)  $getcredit  1  $getcredit  8) {

  showmessage('积分设置有问题,请返回修改');

  }

  这段代码也是一个提示类型的判断语句,当不满足 if 里面的条件时,就会跳到提示页面,提示:积分设置有问题,请返回修改,大家注意这个的提示语言有“返回”的字样,这样我们不需要在填写提示后返回的页面。 Showmessage 会自动生成返回上一页的连接。

  代码如下:

   $starttime = strtotime($startdate) + date('Z') - ($timeoffset  3600);

  $endtime = strtotime($enddate) + date('Z') - ($timeoffset  3600);

  if($startdate  $enddate) {

  showmessage('开始时间大于结束,请返回修改');

  } elseif($timestamp  $starttime) {

  showmessage('活动还没开始,请返回');

  } elseif($timestamp  $endtime) {

  showmessage('活动已经结束了', 'index.php');

  }

  这段代码主要是对抽奖这个活动开始和结束时间做了计算,把标准时间格式转换为 UNIX 时间戳。并对开始结束时间和当前时间做比较,返回一些错误情况的提示信息。

  代码如下:

  $query = $db-query(SELECT COUNT(uid) as joinnum, SUM(credits) as credits

  FROM {$tablepre}luck);

  $total = $db-fetch_array($query);

  $query = $db-query(SELECT count, credits FROM {$tablepre}luck WHERE uid='$discuz_uid');

  if($luck = $db-fetch_array($query)) {

  $update = 1;

  } else {

  $update = 0;

  }

  $remaincount = $joincount - $luck['count'];

  $remaincount = $remaincount  0  $remaincount  0;

更多热点:Photoshop教程 ASP入门教程 视频教程 图片教程 开发速查手册

0
相关文章