该页面首先清空缓冲区内容,然后使用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系统的很多有用的信息,以后再详细研究之。