本文目录一览:
- 1、discuz教程:插件开发经验之如何运用 C::t 方法
- 2、论坛公告怎么写....那位大神来帮我一下。。。。 发链接,复制过来都可以。。。。
- 3、CMS和Discuz有什么区别?
discuz教程:插件开发经验之如何运用 C::t 方法
抽点时间讲解一下C::t方法的简单使用。
一、C::t方法的好处:一是对象清楚,二是对形参格式化处理,三是可集中SQL语句,利于维护,四是安全性更高。
二、具体用法,看下面的例子
假设有一个名为test的插件,其中关于名为tbname的数据表操作的SQL
旧式写法
a.inc.php
?php
……
$query = DB::query('select * from '.DB::table('tbname').' where id='.$id);
while($v = DB::fetch($query)){
……
}
……
?
改造为C::t如下
a.inc.php
?php
……
$query = C::t('#test#tbname')-fetch_all($id);
foreach($query as $key = $value){
或者将上面的两行变为一行,以减少行数,如下
foreach(C::t('#test#tbname')-fetch_all($id) as $key = $value){
……
}
……
?
再新建一个文件夹名为table,放在插件根目录下,在table中创建一个名为table_tbname.php的类文件(详见技术文库的相关说明),该文件的代码框架如下
table_tbname.php
?php
if (!defined('IN_DISCUZ')) {
exit('Aecsse Denied');
}
class table_tbname extends discuz_table{
public function __construct() {
$this-_table = 'tbname';
$this-_pk = 'id';
parent::__construct();
}
/*------------在此处构造N多的自定义函数,本例中自定义的函数如下-------------*/
public function fetch_all($id){
return DB::fetch_all('select * from %t where id=%d',array($this-_table,$id));
}
}
?
C::t的运用有很多变化,但万变不离其宗,基本骨架就是上面的样子。
注意:
1、自定义函数中有一个同名函数名fetch_all,虽然名字相同,但内涵不同。本例比较特殊,实际自定义函数名称你可以随便起,例如public
function
ldsjglfdjs($id),不一定非要像技术文库要求那样规则命名,当然,规则命名更易于辨认理解维护
2、SQL中应当用格式化语句书写,以保障安全性,其中的%t代表了对数据表名的格式化,%d代表了对%id的格式化,其中的含义请查询技术文库"源DB类的改进",以了解掌握都有哪些格式符及其意义并加以运用。这里要特别注意%s和%i的区别,涉及安全处理问题
3、虽然不是必须,但我仍建议并强调,以数组形参的形式作为DB层封装函数的第二参数(如果该函数有此参数的话),例如上例中的
DB::fetch_all(SQL,array(第一形参,第二形参,...)),某些DB层封装的函数对于有无$arg这个数组参数有着不同的执行过
程,将会影响对该参数中的变量是否进行安全过滤的行为
4、SQL中的格式符一定要和数组形参中的变量一一对应,不能颠倒
5、不提倡旧式的SQL写法,如DB::fetch_all('select
*
from
'.DB::table('tbname').'
where
id='.$id),原因见上面的3
6、虽然不是必须,但C::t方法中自定义函数内最好不要使用诸如$_GET、$_POST之类的全局变量,应在C::t之前赋值后传入,否则,例如在DB::query中使用,如不进行过滤,其安全性将难以保障
7、大多数被DB封装的常用数据库操作函数,其参数都将被做安全处理,因此要注意,虽然不是必须避免重复过滤,但应考虑执行效率问题。
8、注意注意再注意,由于大多数被DB封装的常用数据库操作函数都要调用内部query函数,相当于在外部直接使用DB::query,而该函数有个特例情况,就是上面3所说,因此特别要考虑有无数组形参,进而加固安全性
9、尽量将SQL集中放在C::t方法的类文件中,避免在应用层等其他文件中使用SQL,这样能使对象更清晰规范方便维护
官方在source/class/table中已经内置了很多C::t方法,假设在插件设计时所用的方法是官方所没有的,而官方已创建了一个同名类文件,
这时怎么办?那就按上面例子所示,自己创建一个同名类文件就行了,但应用层一定要用C::t('#插件标识符#不带前缀的表名')来调用,而不是
C::t('不带前缀的表名')这种方式
闲暇之余多看看source/class/discuz中的discuz_database.php和dizcuz_table.php这两个重要文件,烂熟其中被DB封装的常用函数的执行原理和机制,对自如运用C::t和加强安全认识有好处
小编极力推荐:
网页制作编辑器大全
论坛公告怎么写....那位大神来帮我一下。。。。 发链接,复制过来都可以。。。。
一、Discuz! 论坛官方 简介
Discuz!
论坛官方是康盛创想(北京)科技有限公司提供社区产品服务、社区产品交流以及最新社区产品演示的官方唯一指定站点,提供服务的产品和服务包括漫游
(manyou)、Discuz!(BBS)、UCenter(用户中心)、UCenter
Home(SNS)、SupeSite(社区门户)、X-Space(个人空间)等,主要提供上述社区产品的安装使用、程序发布、模板插件、BUG反馈等
方面的技术支持的服务。
二、论坛管理细则
(一)、Discuz! 论坛官方免责条款
1、在 Discuz! 论坛官方里发表的文章仅代表作者本人的观点,与本网站立场无关。出于遵守国家相关法律法规的前提,我们有权在不经作者准许的情况下删除其在 Discuz! 论坛官方所发表的文章。
2、Discuz! 论坛官方的所有文章、内容、信息、资料,都不保证其准确性、完整性、有效性、时间性,请依据自身情况做出判断。阅读本站内容因误导等其他因素而造成的损失责任自负,本站没有任何责任。
3、Discuz! 论坛官方如因系统维护或升级而需暂停服务时,将事先公告。若因线路及非本公司控制范围外的硬件故障或其它不可抗力而导致暂停服务,于暂停服务期间造成的一切不便与损失,Discuz! 论坛官方不负任何责任。
4、Discuz! 论坛官方使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,Discuz! 论坛官方不承担任何责任。
5、凡以任何方式登陆本站或直接、间接使用 Discuz! 论坛官方资料者,视为自愿接受 Discuz! 论坛官方声明的约束。本声明未涉及的问题参见国家有关法律法规,当本声明与国家法律法规冲突时,以国家法律法规为准。
(二)、Discuz!论坛官方对每一位网友的忠告
Discuz!论坛官方希望每位成员视自己为社区的一分子,而不是旁观者。如果你只想冷言冷语地嘲讽别人看别人的笑话,请不要来这里;
Discuz!论坛官方希望每位成员都是友善的、平等相待和遵守公共秩序的。如果你想来这里发泄不满,请不要来这里,因为这里不是垃圾场和互相攻击的战
场;
(三)、注册ID管理规则
请勿使用以下注册名:
党和国家领导人或其他名人的真实姓名、字、号、艺名、笔名; 国家机构或其他机构的名称; 不文明、不健康之名字; 易产生歧义、引起他人误解之名字; 图形、符号名字。复制代码
含以上内容的注册名将被无条件删除。
(四)、Discuz!论坛官方绝对禁止谈论的内容
禁止讨论一切政治问题;禁止发表任何色情文章和图片;禁止散布恐怖、凶杀以及给人视觉反感的图片和内容;禁止进行人身攻击;禁止对于政府和法律进行破坏的言论;禁止讨论一切违反中国法律和《国家互联网电子公告服务管理规定》的内容。复制代码
违反上述规定的将删除主帖,同时禁言或封ID或封IP处理。
(五)、违规贴的标准
1、图片违规类
任何人体暴露照片及人体艺术图片;反复贴过很多次的图片;色情的以及打擦边球的图片;引起人视觉反感的图片。复制代码
2、欺骗类
明显的骗分行为;重复灌水,抢楼的;帖子标题和内容不符,欺骗点击的。 复制代码
3、危害社区稳定和形象类
内容低级不健康; 过分的性话题或太过隐私不宜在公开场合讨论的话题;言语肮脏的;黄色笑话和黄色小段子;含病毒连接或恶意代码的; 对论坛恶意分裂的;低俗、无聊的新闻。 复制代码
4、严重浪费社区资源类
社区反复转贴过的内容;重复发出的标题或内容相同的帖子;用户用于测试功能的帖子;不能正确显示的图片(显示成×)的; 内容空洞的;帖子中含大量空白影响其他用户阅读的。 复制代码
5、其它类
讨论、质疑管理员管理方法的;对其它网站、产品进行宣传的广告、链接;恶意攻击或者变相侮辱管理员的贴子;其它社区明令禁止的内容;偷拍他人图片照片。 复制代码
主贴或回复中含有以上内容的,将被管理人员删除;反复发违规贴的ID将视情节轻重给予相应的处理。
对管理员管理有疑问者,请直接向管理员发送 E-mail 投诉,社区负责人会在最短的时间内做出答复。
(六)、关于删贴投诉标准
贴子被删除请用户首先阅读用户规定并自我反省,对管理不服导致的矛盾不得发帖讨说法,请直接向管理员发送投诉邮件进行投诉。
发帖讨说法即视为放弃投诉权,所发帖也一律删除并且警告一次,反复发贴讨说法超过三次封杀用户ID。
投诉信请提交以下内容:
投诉人ID 投诉事件 事件发生时间 投诉理由 投诉证据复制代码
(七)、精彩文章标准
内容充实健康有新意,原创贴优先考虑;质量高的原创内容和用心投入去制作的原创内容;能够让用户学到有用的知识的内容;三个在线管理员认同此帖为精彩文章。复制代码
(八)、遵守版块版规
如果版块有单独设置的版规,在版块发生的任何行为除遵守本管理规定之外,还需遵守该版块版规。
自己看着改....
CMS和Discuz有什么区别?
CMS是内容管理系统的简称,主要是用于搭建网站,如中国站长站,ADMIN5之类的站点都是使用CMS系统来搭建的。而DISCUZ则是一款论坛软件,是康盛推出的一款论坛程序。像国内目前很多论坛都是使用DISCUZ来实现的。确切的说这两种软件的用途是不一样的。都是供上网人员使用的但类型不同。希望我的回答 对你有些行的帮助。