您好,如果是在插件设置下还是会出现问题
例如,我设置插件的模块类型为【管理中心】,且【程序模块】设置成 admin 【链接名称】设置成 管理
那么 在应用列表的本插件将会出现 管理 两字 且链接会是
admin.php?action=plugins&operation=config&do=40&identifier=junhua_usercenter&pmod=admin
如下图:
按程序流程下去,程序会跑到admin.php的57行内进行执行 如下图:
$admincp->admincpfile($action); 执行的结果就是引入下方文件
'./source/admincp/admincp_plugins.php';
然后分析 admincp_plugins.php文件之后 发现此文件的14行有函数 cpheader();
也就是只要引入文件之后 第一个执行的就是 cpheader();这个函数,此函数的内容如下
- function cpheader() {
- global $_G;
- if(!defined('DISCUZ_CP_HEADER_OUTPUT')) {
- define('DISCUZ_CP_HEADER_OUTPUT', true);
- } else {
- return true;
- }
- $IMGDIR = $_G['style']['imgdir'];
- $STYLEID = $_G['setting']['styleid'];
- $VERHASH = $_G['style']['verhash'];
- $frame = getgpc('frame') != 'no' ? 1 : 0;
- $charset = CHARSET;
- $basescript = ADMINSCRIPT;
- echo <<<EOT
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=$charset">
- <meta http-equiv="x-ua-compatible" content="ie=7" />
- <link href="static/image/admincp/admincp.css?{$_G[style][verhash]}" rel="stylesheet" type="text/css" />
- </head>
- <body>
- <script type="text/JavaScript">
- var admincpfilename = '$basescript', IMGDIR = '$IMGDIR', STYLEID = '$STYLEID', VERHASH = '$VERHASH', IN_ADMINCP = true, ISFRAME = $frame, STATICURL='static/', SITEURL = '$_G[siteurl]', JSPATH = '{$_G[setting][jspath]}';
- </script>
- <script src="{$_G[setting][jspath]}common.js?{$_G[style][verhash]}" type="text/javascript"></script>
- <script src="{$_G[setting][jspath]}admincp.js?{$_G[style][verhash]}" type="text/javascript"></script>
- <script type="text/javascript">
- if(ISFRAME && !parent.document.getElementById('leftmenu') && !parent.parent.document.getElementById('leftmenu')) {
- redirect(admincpfilename + '?frames=yes&' + document.URL.substr(document.URL.indexOf(admincpfilename) + admincpfilename.length + 1));
- }
- </script>
- <div id="append_parent"></div><div id="ajaxwaitid"></div>
- <div class="container" id="cpcontainer">
- EOT;
- if(empty($_G['inajax'])) {
- register_shutdown_function('cpfooter');
- }
- }
复制代码
分析之后发现函数中是任何条件下 都会执行 这个 echo 操作,也就是 不管任何情况下,只要是 admin.php?action=plugins 链接下的任何ajax操作,都是无法做到正确的json 或者 xml数据,哪怕用上了 inajax=1 也是无效的
|