设为首页 收藏本站
查看: 961|回复: 0

[经验分享] Discuz之轻松理解下common.inc.php

[复制链接]

尚未签到

发表于 2018-12-24 08:20:47 | 显示全部楼层 |阅读模式
  DISCUZ里的include/common.inc.php是DZ的公共处理程序,很多DZ的程序都包含了它。

利用它,我们可以在它已有的基础上做自己想做的事情。

1、它定义了DISCUZ_ROOT 这个常量,用于表示论坛所在的文件目录。因为有时候我们不一定在论坛根目录写程序,所以用上这个常量会比较准确定位要引用的文件,在我们要引用文件时,一般也要写上这个。

2、它引进的include/global.func.php包含了DZ的一些公共函数。所以可以使用这些函数了。

3、它判断了当前用户是否是搜索引擎,用常量IS_ROBOT区分。利用此,我们可以做一些区分机器人与普通游客分别运行的操作。有时候我们不希望在搜索引擎访问的时候让执行速度变慢,或者我们不希望搜索引擎看到一些东西。

4、它对$_COOKIE,$_POST,$_GET进行了addslashes 并且进行了类似 extra效果的转换。所以,我们通常不必再使用类似 $_POST[uid] 这样的变量了。所以在做表单的处理的时候,我们就很轻松了,只需要在复制下表单名称再加个$就可以了。

5、它引进了论坛的配置文件。在那里我们可以得到论坛和UC相关的配置信息。比如,我们常常要使用到的数据库前缀 $tablepre。

6、它把$_COOKIE里的本论坛专用的变量转换成了$_DCOOKIE,这样方便即区分了COOKIE前缀,又方便了写法。所以我们要使用DZ的 dsetcookie和$_DCOOKIE。有人没意识到这个使用了dsetcookie又没使用$_DCOOKIE的话,可能会得不到值,以为没效果。

7、它实例化了数据库连接类,我们只需要使用$db来进行数据库的操作,比如$db->query();。比如在做充值接口时,虽然充值程序放在了下级目录,但通过引用common.inc.php,依然可以使用$db来方便地进行更改用户金额,这就避免了要自己再去写数据库连接。

8、它还获得了当前的时间戳,$timestamp,这是经常用到的。它常常用于写进数据库来表示时间,用int 10,在开发中是常用的,比如用于记录某条数据的提交时间。

9、它还获得了$PHP_SELF, $BASESCRIPT, $BASEFILENAME, $boardurl这些有用的变量。其中$boardurl是很经常用到的,用于表示论坛的根目录的URL。在做JS的站外引用的时候,我们常常就要把$boardurl输出来。

10、它还获得了当前用户的IP地址,变量是$onlineip。这也是开发中经常要用到的。比如在做投票插件的时候,我们就要记录用户的IP。

11、它启用了ob_start(),所以我们可以在后面使用类似ob_get_clean() 之类的函数来获取输出内容用于生成静态等等。

12、它获得了当前用户的UID和用户名,分别是 $discuz_uid和$discuz_user。当然,还有$discuz_userss,不过这个并不常用,这个是未进行addslashes之前的。有些人说用户名是$discuz_userss,并在程序中使用这个,我觉得应该是不对的吧。

13、它还获得了用户的用户组$groupid,这个常用于判断用户权限,比如某插件只允许哪些用户组使用,就需要根据这个来判断。

14、在common.inc.php里,$page,$tid,$fid,$typeid都做了处理。所以,我们在别的程序里,一般就可以大胆的使用了,而没有必要再 intval 一下了。其中$page是我们经常要用到的,在写分页的时候,在分页的时候就没有必要再处理它了。刚接触DZ开发的人可能会自己另写一套分页函数,其实 DZ有自己的分页函数multi()很好用的,完全可以利用,至于外观和page参数重复,可以输出后替换下和增加样式即可。

15、它还判断了版块的版主权限,$forum['ismoderator'],在版块列表页和内容主题页,甚至其它含有fid或tid的页面,我们就可以用它来判断是否有管理权限了。

16、它运行了插件的全局包含和输出之前的页面嵌入类型插件。利用此,我们可以通过插件,在公共程序里全部运行或通过判断当前的CURSCRIPT 决定是否运行代码。

借助它,我们几乎可以做任何我们想做的事情,比如用它做一个单独页面,做一个功能模块。甚至可以不在论坛根目录而是在更深的目录使用它。我们想要用到的东西它几乎都有。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-655060-1-1.html 上篇帖子: PHP根据wsdl生成调用soap webservice代码 下篇帖子: debian下编译安装php5.2
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表