Discuz!客户端api开发(一)

前段时间给自己Discuz!x3.2论坛开发客户端,自己就研究了下discuz的api的接口和流程,记录下一些重要的点。

api的入口文件,为根目录下的api.php,代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
define( 'IN_API' , true); //定义api标识
define( 'CURSCRIPT' 'api' ); //定义CURSCRIPT常量
$modarray  array ( 'js'  =>  'javascript/javascript' 'ad'  =>  'javascript/advertisement' );
$mod  = ! empty ( $_GET [ 'mod' ]) ?  $_GET [ 'mod' ] :  '' ;
if ( empty ( $mod ) || !in_array( $mod array ( 'js' 'ad' ))) {
     exit ( 'Access Denied' );
}
require_once  './api/' . $modarray [ $mod ]. '.php' ; //包含对应php文件
function  loadcore() {
     global  $_G ;
     require_once  './source/class/class_core.php' ;
     $discuz  = C::app();
     $discuz ->init_cron = false;
     $discuz ->init_session = false;
     $discuz ->init();
}
?>

该文件最后包含根目录下api/mobile/下的文件,源码中该文件夹里只有一个index.php文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if (! empty ( $_SERVER [ 'QUERY_STRING' ])) {
     $plugin  = ! empty ( $_GET [ 'oem' ]) ?  'mobileoem'  'mobile' ;
     $dir  '../../source/plugin/' . $plugin . '/' ;
     chdir ( $dir );
     if ((isset( $_GET [ 'check' ]) &&  $_GET [ 'check' ] ==  'check'  ||  $_SERVER [ 'QUERY_STRING' ] ==  'check' ) &&  is_file ( 'check.php' )) {
         require_once  'check.php' ;
     elseif ( is_file ( 'mobile.php' )) {
         require_once  'mobile.php' ;
     }
}
?>

可以看出,是想包含/source/plugin/mobile/mobile.php的逻辑,所以可以索性直接在api.php中包含mobile的逻辑即可,修改如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
define( 'IN_API' , true);
define( 'CURSCRIPT' 'api' );
$module  = ! empty ( $_GET [ 'module' ]) ?  $_GET [ 'module' ] :  '' ;
if ( empty ( $module )) {
     exit ( 'Access Denied' );
}
chdir ( 'source/plugin/mobile/' );
if ((isset( $_GET [ 'check' ]) &&  $_GET [ 'check' ] ==  'check'  ||  $_SERVER [ 'QUERY_STRING' ] ==  'check' ) &&  is_file ( 'check.php' )) {
     require_once  'check.php' ;
elseif ( is_file ( 'mobile.php' )) {
     require_once  'mobile.php' ;
}
function  loadcore() {
     global  $_G ;
     require_once  './source/class/class_core.php' ;
     $discuz  = C::app();
     $discuz ->init_cron = false;
     $discuz ->init_session = false;
     $discuz ->init();
}
?>

如果请求包含了check,则包含check.php代码,否则直接包含mobile.php的逻辑,即客户端的处理逻辑。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值