抛砖引玉.. 其他大神请果断犀利改进.
if($_SERVER['REQUEST_METHOD'] == 'POST' || $_GET['echostr']) {
define('APPTYPEID', 127);
define('CURSCRIPT', 'plugin');
define('DISABLEXSSCHECK', true); // 禁用 _xss_check
define('DISCUZROOT', substr(dirname(__FILE__), 0, -42));
chdir(DISCUZROOT);
$_GET['id'] = 'singcere_wxpublic';
require './source/class/class_core.php';
$discuz = C::app();
$cachelist = array('plugin', 'diytemplatename');
$discuz->cachelist = $cachelist;
$discuz->init();
define('CURMODULE', 'singcere_wxpublic');
$_G['siteurl'] = substr($_G['siteurl'], 0, -43);
$_G['siteroot'] = substr($_G['siteroot'], 0, -43);
include DISCUZ_ROOT.'./source/plugin/singcere_wxpublic/singcere_wxpublic.inc.php';
} else {
echo 'Access Denied';
}
思路是 插件中提供独立PHP脚本. 禁用掉xss检查后, 再include插件逻辑.
缺点是 部分application初始化的变量可能会造成错误取值. 请自行排查.
|