zblogphp系统文件说明c_system_misc.php输出系统(其他)信息

admin2023-01-191746

该页面首先清空缓冲区内容,然后使用GetVars函数来获得$GLOBALS数组中对应的值,参数2表示该值的类型。得到的结果赋值给$type

执行 Filter_Plugin_Misc_Begin 的插件过滤函数,参数是$type。

完成之后开始根据$type的值使用switch函数来进行不同的处理

1.值为statistic,判断是否为管理权限,如果没有,输出错误信息(没有权限),否则执行misc_statistic函数

2.值为updateinfo,判断是否为超级权限,如果没有,输出错误信息(没有权限),否则执行misc_updateinfo函数

3.值为showtags,判断是否有文章编辑权限,如果没有,输出404页面,否则执行misc_showtags函数

4.值为vrs,判断是否有杂项编辑权限,如果没有,输出错误信息(没有权限),否则执行misc_viewrights函数

5.值为phpinfo,判断是否为超级权限,如果没有,输出错误信息(没有权限),否则执行misc_phpinfo函数

其他情况直接break处理。

以下内容说明各个函数进行的处理过程

1. 在线更新信息 misc_updateinfo函数,共9行代码

global $zbp; 引用全局$zbp对象

通过URL获得远程更新内容,并赋值到$r

载入插件Configs表

加载缓存

$zbp->cache->reload_updateinfo = $r;

$zbp->cache->reload_updateinfo_time = time();

保存缓存

输出$r

2. 显示网站基本信息misc_statistic函数

global $zbp; 引用全局$zbp对象

如果是超级权限或者是更新模板,如果第一个参数是TRUE则表示是否需要更新而不创建,则在此处执行更新模板且创建模板?乱了乱了

如果不是超级权限,获得当前时间比缓存中上次更新时间超过23小时,则返回权限不足

定义空变量$r

得到公开文章数 $zbp->cache->normal_article_nums

得到置顶文章数组 $zbp->cache->top_post_array = serialize($array);

得到评论数

总评论 $zbp->cache->all_comment_nums

未审核评论 $zbp->cache->check_comment_nums

$all_comments = 总评论

$xmlrpc_address = 得到xmlrpc地址

$current_member = 得到当前用户名

$current_version = 得到类似的版本号 1.5.1 1740 (Zero)

$all_artiles = 得到所有文章

$all_pages = 得到所有页面

$all_categorys = 得到所有分类

$all_views = 得到所有浏览数

$all_tags = 得到所有标签

$all_members = 得到所有用户

P.S.这里的实际是类似于模板变量格式的字符串,将在下面进行替换

$current_theme = 得到当前使用的主题

$current_style =  得到当前主题使用的样式文件

$current_member = 得到当前用户,重复了?

$current_version = 得到版本号,和上面一样?

$system_environment = 得到当前的系统环境值

您的Z-BlogPHP打开了开发模式。此模式下网站有被黑的风险,实际部署在线上的网站请及时关闭开发模式!

$zbp->cache->reload_statistic = $r值

$zbp->cache->reload_statistic_time = 当前时间戳

$zbp->cache->system_environment = 系统信息

$zbp->cache->all_article_nums = 所有文章总数

$zbp->cache->all_page_nums = 所有页面总数

添加 statistics模块,参数为所有文章数,所有页面数,所有分类数,所有标签数,所有浏览数,所有评论数

然后statistics创建模块

最后保存缓存

对上面的模板变量格式进行替换,包括博客HOST,当前用户名,当前主题,当前样式,当前版本,当前环境等,最后输出

从结果看应该就是博客后台网站摘要中的网站信息的内容。

3. 添加文章标签misc_showtags函数

global $zbp; 引用全局$zbp对象

header设置该页面返回内容类型为JS,字符编码为utf-8

然后对ID为ajaxtags的元素设置html内容,其内容为标签列表,然后$("#ulTag").tagTo("#edtTag");';中

#ulTag为标签DIV的ID,#edtTag为文章标签表单。效果为点击标签则将这个标签添加到文章的标签表单中,所以这个函数实在文章编辑或者创建文章页面中使用的。

4. 查看权限页面misc_viewrights函数

global $zbp, $blogtitle; 引用全局$zbp对象,

赋值$blogtitle为博客名称+查看权限字样【点击用户管理->查看选项】

执行 Filter_Plugin_Other_Header 的插件看书

然后先输出用户名和用户级别,然后foreach输出位于$GLOBALS['actions']中的所有权限名称和值,有权限的显示绿色,没权限的显示红色。最后输出执行时间。

5. 输出phpinfo信息页面misc_phpinfo函数

global $zbp, $blogtitle; 引用全局$zbp对象,

$blogtitle 重赋值为博客名称 + -phpinfo

ob_start() 打开输出缓冲区

phpinfo() 执行phpinfo函数

得到缓冲区的内容并删除当前缓冲区,然后赋值给$s

如果PHP解析引擎不是ENGINE_HHVM,则正则匹配body中的内容

以下内容为附加内容,研读html代码。

strpos(GetVars('HTTP_USER_AGENT', 'SERVER'), 'Trident/') 获取HTTP_USER_AGENT字符串,判断Trident/的出现位置,如果出现,则输出

等于Z-BlogPHP 1.5.1 Zero

$GLOBALS['hooks']['Filter_Plugin_Other_Header'] 执行插件函数

$blogtitle等于博客标题

如果PHP解析引擎是ENGINE_HHVM,则输出GetEnvironment函数输出系统信息,否则输出上面正则匹配的body中的内容。

$ca以explode函数分割上面的各种内容(函数)。

foreach输出对应函数的执行结果。

defined检查一个厂里名称是否存在,如果存在,constant输出常量的值

get_defined_constants返回所有当前已经定义的常量数组,键是常量名,值是常量值。参数true表示让此函数返回一个多维数组,分类为第一维的键名,常量和它们的值位于第二维。

$ca = $ca['user']; 这个应该是用户常量分类数组。

然后输出用户常量和使用TransferHTML函数通过正则表达式格式化字符串,参数1是字符串,删除2是正则表达式,这里用的是[nohtml]。 if(defined(trim($value)))echo constant(trim($value));

输出所有全局常量 get_defined_constants

输出所有include加载文件 get_included_files()

输出所有插件过滤接口,以及no specification不规范类型的接口? $GLOBALS['hooks'] ,$badfilter = array_diff_key($badfilter , $ca);

输出系统others信息 php_uname

输出所有类get_declared_classes

输出所有已声明的接口get_declared_interfaces

输出所有已声明的traits get_declared_traits

总之,这个函数可以获得zblogphp系统的很多有用的信息,以后再详细研究之。

网友评论