为你守候
今天早上起得稍微早些,6点半左右吧,继续研究论坛模式名称不显示的问题,结果两个多小时过后还是没办法解决。后来注意到已经安装的插件名称也是不显示(老问题了,也是发现了解决不了),就研究它去了,反复修改模板文件还是不显示;可能是位置的关系——第一单元格?调整后也不行;想在插件目录后面直接调用下插件名称,结果也不显示。这个就很奇怪了,于是回头查看php文件(admin/settings.php),有这样一段:
foreach ($db_hackdb as $key => $value) {
$value[0] = htmlspecialchars($value[0]);
${$value[1].'_'.$value[2]} = 'SELECTED';
$value[4] = EncodeUrl("$basename&action=delete&id=$value[1]");
if (file_exists(R_P."/hack/$key/index.php")) {
$installdb['index'][$key] = $value;
} else {
$installdb['noindex'][$key] = $value;
}
}
第2行那个$value[0]就是插件名称,它用htmlspecialchars()函数输出,百度查看这个函数:
定义和用法
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
预定义的字符是:
& (和号)成为 &
" (双引号)成为 "
' (单引号)成为 '
< (小于)成为 (大于)成为 >
插件名称还要转换为html实体?况且几乎没有可能包括上述几个预定义字符啊!(测试用“”提交保存插件名称后竟然可以显示)于是“//”注释第2行代码,根本就用不着!测试成功!
再回头看论坛模式名称不显示的问题,竟然也是用的这个htmlspecialchars() 函数!我真不知道说啥好了!
$db_bbsname = htmlspecialchars($db_bbsname);
$db_areaname = htmlspecialchars($db_areaname);
$db_modename = htmlspecialchars($db_modename);
“//”注释,上传覆盖,成功!论坛模式名称和已安装插件名称不显示的问题终于解决了!