童虎: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入门教程 视频教程 图片教程 开发速查手册