2023-05-12 开启多语言插件支持……

借助common.inc.php做任何事情

discuz 苏 demo 2821℃ 0评论

借助common.inc.php做任何事情

 

DISCUZ里的include/common.inc.php是DZ的公共处理程序,很多DZ的程序都包含了它。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

借助它,我们几乎可以做任何我们想做的事情,比如用它做一个单独页面,做一个功能模块。甚至可以不在论坛根目录而是在更深的目录使用它。我们想要用到的东西它几乎都有。当然,它还做了很多其它的有用的处理,因为和二次开发关系不大,这里不提。

使用它之前,仔细阅读它。

 

打赏

转载请注明:苏demo的别样人生 » 借助common.inc.php做任何事情

   如果本篇文章对您有帮助,欢迎向博主进行赞助,赞助时请写上您的用户名。
支付宝直接捐助帐号oracle_lee@qq.com 感谢支持!
喜欢 (0)or分享 (0)