比如在管理页面点站点设置 进入admincp.php?ac=config 可是进入admincp.php里死活找不到哪里接受到ac=config这个处理程序,也不知道admincp.php是如何处理配置的。仔细看了一看还真找到了。

打开admincp.php

大概在43行

if(empty($_GET[‘ac’]) || (!in_array($_GET[‘ac’], $acs[0]) && !in_array($_GET[‘ac’], $acs[1]) && !in_array($_GET[‘ac’], $acs[2]) && !in_array($_GET[‘ac’], $acs[3]))) {
 $ac = ‘index’;
} else {
 $ac = $_GET[‘ac’];
}

 

在这里把接到的”config”值放到$ac里

关键是120行(根据具体可能行号可能有些误差)这里

if($ac == ‘name’) {
 $acfile = ‘space’;
} else {
 $acfile = $ac;
}

就是赋值,根据这些来包含具体的文件。

 

下面不远出(就是最后两行)就出现了要找的东西了

include_once(S_ROOT.’./admin/admincp_’.$acfile.’.php’);  //把$acfile里的值”config”和前缀组成文件名”admincp_config.php”把它包含进来了。
include_once template(“admin/tpl/$acfile”);

 

就这样了,然后你就可以去找admin/admincp_config.php这个文件,看看他是怎么处理配置的。

打开这个文件,找到51行

 foreach ($_POST[‘config’] as $var => $value) { //把post里的值遍历出来,放到$setarr里
  $value = trim($value);
  $setarr[] = “(‘$var’, ‘$value’)”;
 }
 if($setarr) {
  $_SGLOBAL[‘db’]->query(“REPLACE INTO “.tname(‘config’).” (var, datavalue) VALUES “.implode(‘,’, $setarr)); //在此执行插入,这个插入语句是用 REPLACE INTO ,这个意思是如果原来var字段有相同的值,则把原来的删掉,然后用新的插入,一句话,替换原来已有的值。
 }

 

搞定。

Comments are closed.

Post Navigation