欢迎大家加入笔记的建设,共同丰富和完善内容!
本人专科应届毕业生,寻求工作中,求介绍~
痛恨盗版的DzzOffice,还有盗我DzzOffice 笔记文档的,凡使用盗版的拒绝提供任何服务。
function_xxx.php
(函数库)或class_xxx.php
(类库)为命名。.htm
为后缀命名,插件模板文件位于dzz/identifier/template/
目录中,移动端插件模板位于dzz/identifier/template/mobile/
目录中。.php
为后缀命名,插件语言包文件位于dzz/identifier/language/zh-cn/
目录中,文件名为lang.php
。/data/cache
目录中,根据不同的用途进行独立命名。.sql为
后缀,存放于data/
目录中。C::t(Table类文件名)
"方式调用。插件如需封装自己的数据表,可将Table类文件存放于dzz/identifier/class/table/
目录下,并以table_表名.php
格式命名。core/class/class_core.php
是 DzzOffice 的通用初始化模块程序,其几乎被所有的外部代码所引用,在您开始插件设计之前,可以先对该模块的大致功能做一定的了解。class_core.php
主要完成了以下任务:config/config.php
中提供的数据库账号信息,建立数据库连接。DzzOffice 支持数据表的前缀,如需获得表的全名,可使用DB::table('tablename')方式。$_G['uid']
为非0
,$_G['username']
(用户名)、$_G['member']['username']
(原始的用户名,可用于页面显示)、$_G['member']['password']
(用户密码的MD5串)等相应用户信息赋值,其他用户信息存放于 $_G['member']
,更多信息可通过getuserprofile()
获取。$_G['adminid']
为非0
。$_G['groupid']
,相关权限从该$_G['groupid']
所对应的系统缓存中读出,存放于 $_G['group']
。<?php
,慎用 <?
和 <?=
。*.php
都可通过 index.php?mod=xxx&op=xxx
方式进行访问。PHP
文件,除 API 和第三方 SDK 外,必须检测 IN_DZZ
常量是否已经定义。不需检测 IN_DZZ
常量的情况有:IN_ADMINCP
常量(后台模块可同时检测 IN_DZZ
、IN_ADMINCP
,或单独仅检测 IN_ADMINCP
)。install.php
、uninstall.php
、upgrade.php
必须检测 IN_ADMINCP
常量。ADMINSCRIPT
,而不是admin.php
。PHP
文件,推荐文件结尾不使用?>
标签。?>
标签,在标签后不允许存在任何多余的字符,包括空格、回车在内的空白。TYPE=MyISAM
转换为 ENGINE=MyISAM DEFAULT CHARSET=xxx
)。
SELECT
和 DELETE
语句均可通过使用 WHERE IN
语句进行优化,使原本的执行多次查询优化为一次。script
标签访问,将原本的操作优化为异步进行。dfsockopen()
访问远程 URL,而非使用file_get_contents()
或手动创建CURL
对象dhtmlspecialchars()
过滤 HTML 字符,防止在 PHP 5.4.0 或更高版本的服 务器中出现问题daddslashes()
过滤入库的字符串,正确处理数组变量diconv()
转换编码cutstr()
而非 substr()
切割字符串,避免中文字符被错误切割include
、include_once
、require
、require_once
动态的引入文件,必须保证路径的合法性,例如下面的代码:
in_array($mod, array ('index', 'del'))
),保证类似情况下,$mod
是合法的。intval()
,字符串数据执行 daddslashes()
。
LIKE
语句,还应该额外过滤%
和_
字符。
$result['name']
是从数据库中查询得到,未经过滤就再次代入到 SQL 语句中,依旧存在 SQL 注入漏洞,而且较为隐蔽,开发者应当正确处理这种情况。
submitcheck()
或手动检测FORMHASH
,上述代码if(!submitcheck('delsubmit')) {
或if(FORMHASH != $_GET['formhash']) {
<input type="text" value="$data" />
和 <textarea>$data</textarea>
等情况。