二楼是教程。需要的朋友看过来。哇哈哈~~ :laugh:
代码:
直接分析bank.php文件吧。
大家对比原文件与我修改的文件就会发现。其实我只是加了一个函数而已!
下面这个
===================================================
//下面是新增的函数,名字叫prestige
function prestige()
{
global $forums, $DB, $bbuserinfo, $_INPUT, $bboptions;
//取得全局变量值。这个命令执行以后就基本能调用论坛上所有的东西了。厉害的呢
$amount = intval($_INPUT['amount']); //取得输入。
//取得输入信息,并判断是买还是卖
if ( !$_INPUT['prestiges'] || ($_INPUT['prestiges'] != 'm1' && $_INPUT['prestiges'] != 'm2') ) {
$forums->func->standard_error("erroroperation");
}
//判断是否输入正确。半角的阿拉伯数字同时大于1
if ( $amount < 1 ) {
$forums->func->standard_error("noamountprestige");
}
$banksettings = $this->banksettings; //取得银行设定
//如果买
if ( $_INPUT['prestiges'] == 'm1' && $bbuserinfo['cash'] < $amount*$bboptions['prestigebuyprice'] ) {
$forums->func->standard_error("noenoughmoney");
}
//如果卖
if ( $_INPUT['prestiges'] == 'm2' && $bbuserinfo['prestige'] < $amount ) {
$forums->func->standard_error("noenoughprestige", 0, $amount);
}
$bbuserinfo = $this->bankfunc->patch_bankinfo();
//执行买或卖的操作
if ( $_INPUT['prestiges'] == 'm1' ) {
$this->bankfunc->desc = $forums->lang['buy']." ".$amount." ".$forums->lang['prestigepoint'];
if ( !$this->bankfunc->add_money($bbuserinfo, -1*$bboptions['bprestigebuyprice']) ) {
$forums->func->standard_error("handleerror");
} else {
$amount1 = $amount * $bboptions['prestigebuyprice'];
$DB->query("UPDATE ".TABLE_PREFIX."userexpand SET prestige = prestige+".$amount." WHERE id = ".$bbuserinfo['id']."");
$DB->query("UPDATE ".TABLE_PREFIX."user SET cash = cash-".$amount1." WHERE id = ".$bbuserinfo['id']."");
} //
买操作完成
}
else if ( $_INPUT['prestiges'] == 'm2' ) {
$this->bankfunc->desc = $forums->lang['sale']." ".$amount." ".$forums->lang['prestigepoint'];
if ( !$this->bankfunc->add_money($bbuserinfo, $amount*$bboptions['bprestigesellprice']) ) {
$forums->func->standard_error("handleerror");
} else {
$amount2 = $amount*$bboptions['prestigesellprice'];
$DB->query("UPDATE ".TABLE_PREFIX."userexpand SET prestige = prestige-".$amount." WHERE id = ".$bbuserinfo['id']."");
$DB->query("UPDATE ".TABLE_PREFIX."user SET cash = cash+".$amount2." WHERE id = ".$bbuserinfo['id']."");
}
//
卖操作完成
}
//操作成功,跳转到银行主页面
$forums->func->standard_redirect("bank.php?".$forums->sessionurl);
exit;
}
===================================================
说明基本上都写进里面了。这里有几个要注意的。
$bbuserinfo 这个是论坛用户的数组。就是用户的所有个人信息都可以由它来调用。用法:$bbuserinfo['字段名']
所谓所有个人信息是指:
数据库中的下面这些表的字段:
mxb_user (个人信息,用的最多的)
mxb_useractivation
mxb_userexpand (这个是自定义积分策略保存的表)
mxb_userextra
mxb_usergroup
mxb_userolrank
mxb_userpromotion
mxb_usertitle
这里我就不一一说明表都是做什么的了。大家自己体会吧。
$bboptions 这个是论坛设置的数组。基本上论坛的所有设置都在这里,除了银行的设定。因为银行是通过另一种
设置的没有认真去找在哪里。用法: $bboptions['字段名']
字段名就是常规设置里面的所有变量。
可以在下表中找到。
mxb_setting (论坛设置保存的表)
我们这里所谓集成到后台就是通过这个数组来的。我们用的就是
$DB 这个是对数据库操作的全局定义。
用法很多。这里就不一一举例了。
看看我们这里是怎么用的:
$DB->query("UPDATE ".TABLE_PREFIX."userexpand SET prestige = prestige-".$amount." WHERE id = ".$bbuserinfo['id']."");
格式为:
$DB->query("SQL命令");
我们的命令是这个意思。“更新 mxb_userexpand 里面的 prestige为(prestige + $amount) 仅仅是对
id为 $bbuserinfo['id'] (就是当前页面停留的ID,也就是访问这个页面的人) 更改。
比如,大家要更改用户姓名可以这样用。
$DB->query("UPDATE ".TABLE_PREFIX."user SET name = ‘猪头’ WHERE id = ".$bbuserinfo['id']."");
那么访问了这个页面的人的名字都会变成猪头。。。。。
就介绍那么多吧。
===================================================
还有
在最前面的switch语句里还加了一个调用函数的东西。
===================================================
switch ($_INPUT['do'])
{
case 'purge':
$this->purge();
break;
case 'dopurge':
$this->dopurge();
break;
case 'mkaccount':
$this->mkaccount();
break;
case 'showlog':
$this->showlog();
break;
case 'takeloan':
$this->takeloan();
break;
case 'pbclean':
$this->pbclean();
break;
case 'returnloan':
$this->returnloan();
break;
case 'transfer':
$this->transfer();
break;
case 'depositorwithdraw':
$this->depositorwithdraw();
break;
case 'borsreputation':
$this->borsreputation();
break;
//这里是新增加的,是通过银行页面返回过来的prestige参数来执行prestige()函数。
case 'prestige':
$this->prestige();
break;
//这里是新增加的
default:
$this->showmain();
break;
}
=====================================================
注意:
1。大家有自己定义的函数之后请务必在次添加。
2。函数名字最好全英文。(有下划线之类的不会执行,或者是有问题。没有详细测试,不知道是否存在。)
=====================================================
好,bank.php就讲那么多。下面我们讲bank_man模版。
下面是新增的内容
=====================================================
<tr>
<form action="bank.php" name="mutliact" method="post">
<input type="hidden" name="s" value="{sessionid}" />
<input type="hidden" name="do" value="prestige" />
<td nowrap="nowrap"><strong>威望数值:</strong></td>
<td nowrap="nowrap"><input type='text' size='15' name='amount' value='' class='bginput' /></td>
<td nowrap="nowrap" align="center"><input name="prestiges" type="radio" value="m1" checked='checked' /> {$lang['buy']} <input name="prestiges" type="radio" value="m2" /> {$lang['sale']}</td>
<td nowrap="nowrap"><input type='submit' value='{$lang['dochange']}' class='button' /></td>
</form>
</tr>
=====================================================
熟悉表格的应该不用我说了吧。就是几个按钮而已。我们关键看看这几个地方。
<input type="hidden" name="do" value="prestige" />
这里是说明你按了最后的提交按钮后执行那个函数。上面的value="函数名"
<input type='text' size='15' name='amount' value='' class='bginput' />
就是输入转换的数量的。$amount = $intval($_INPUT['amount']);就可以取得它得值
<input name="prestiges" type="radio" value="m1" checked='checked' />
上面这个是一个圆圈的按钮,表示名字叫prestiges(自己定义一个),一般跟下面那个一样。
因为它们两个是只选一个的呢。。。买入和卖出。
变量value="编号" 编号最好英文,上下两个不一样的哦。先看看下面那个
<input type='submit' value='{$lang['dochange']}' class='button' />
一个是m1,一个是m2。一般成对出现,或者你自己弄个好记得。。。简单的
为什么要这个呢?
if($_INPUT['prestiges'] == 'm1')
看,上面,如果你选的是买,那就传回给系统m1变量。。。。说明你要买。。。如果m2,那就是卖。
懂了不?
=====================================================
最后说说语言文件。其实很简单。
随便拿个文件来说吧。就我们包里面的bank.php吧
首先看它的头和尾。
<?php
$lang = array(
'变量' => '变量对应的名字',
'' => '',
'' => '',
);
?>
其实它是一个数组,被赋进$lang这个变量里面了。可以说语言文件只要一个就够了。但是为什么会有那么多个呢?
其实是为了好区分。好管理。(个人意见,纯属瞎掰)
如何调用呢?
一般是在模版里面
用法: {$lang['变量']}
这样,那就显示的是我们语言文件里面对应的变量的名字了。大家应该明白吧?
=====================================================
全文完。不在更新。有错误请老大纠正。
2006-10-30 3:43完成
=====================================================
此帖由 CaThi 在 2006-10-30 03:45 进行编辑...