使用过PHPMyAdmin的人知道,在PHPMyAdmin中,使用文件config.inc.PHP保存用户名和密码,当需要更换用户或用户口令更改时,必须修改config.inc.PHP文件,然后再上传,特别的不方便。更有时,为了修改MYSQL库或表而使用root账号,如果这时其它网站的自动搜擎系统搜索到index.PHP并继续执行其中的每一步的话,是相当危险的。为此需要用户登陆机制,在每次使用时,输入用户名和口令,这样会安全得多。
以下是我在管理过程中,根据实际需要,对PHPMyAdmin做的一些更改,为了尽量不影响原来PHPMyAdmin的结构,我在PHPMyAdmin的基础上增加了一个文件index0.PHP,仅仅修改了一个文件config.inc.PHP,对PHPMyAdmin没有一点影响,既可以使用原来的PHPMyAdmin,也可以使用新的用户口令登陆机制。
以下为两个文件列表,将这两个文件拷贝到PHPMyAdmin目录,执行index0.PHP即可,该程序在Apache + PHP + MYSQL 和 IIS5 + PHP + MYSQl 和 PWS + PHP + MYSQL下正常执行。
PHPMyAdmin 下载:
A set of PHP3-scripts to adminstrate MySQL over the WWW.
Version 2.1.0 - 08/06/2000
http://www.PHPwizard.net/projects/PHPMyAdmin/
index0.PHP文件:
MySQL 维护
//编码,防止在地址栏上显示
function b2h($string) {
return(bin2hex(strrev($string)));
}
//反编码,防止在地址栏上显示
function h2b($string) {
$stringtmp="";
for($i=0;$i $stringtmp .= pack("C",hexdec(substr($string,$i,2))); } return(strrev($stringtmp)); } global $PHP_SELF; if (1==0) { echo "-->PHP运行不正常,请检查} else { echo "--".">"; } ?> 欢迎使用本工具用于维护MySQL数据库 ?step=2">下一步 ->
} if ($step==2) { $userfiletmp="/tmp/~userfile/~tmp.inc"; if (file_exists($userfiletmp)) { include $userfiletmp; //$dbservertype,$servername,$dbusername,$dbpassword,$dbname; $dbservertype=h2b($dbservertype); $servername=h2b($servername); $dbusername=h2b($dbusername); $dbname=h2b($dbname); $curtime=h2b($curtime); if (time()-$curtime<120){ $dbpassword=h2b($dbpassword); }else{ $dbpassword=""; } }else{ $dbservertype="mysql"; $servername="localhost"; $dbusername=""; $dbpassword=""; $dbname=""; } $dbservertype=($dbservertype==""?"mysql":$dbservertype); $servername=($servername==""?"localhost":$servername); ?> 填入连接信息
主机类型:
主机地址:
用户名称:
密码:
数据库名:
}
if ($step==3) {
$dbservertype=trim($dbservertype);
$servername=trim($servername);
$dbusername=trim($dbusername);
$dbpassword=trim($dbpassword);
$dbname=trim($dbname);
echo "
确认是否正确:n";
echo "
Database server type: $dbservertypen";
echo "
Database server hostname / IP address: $servernamen";
echo "
Database username: $dbusernamen";
echo "
Database password: ******n";
echo "
Database name: $dbnamen";
echo "
以上参数正确才能继续";
$dbservertype=b2h($dbservertype);
$servername=b2h($servername);
$dbusername=b2h($dbusername);
$dbpassword=b2h($dbpassword);
$dbname=b2h($dbname);
$userfiletmp="/tmp/~userfile/~tmp.inc";
if (!file_exists(dirname($userfiletmp))) {
mkdir(dirname($userfiletmp), 0700);
}
$handertmp=fopen($userfiletmp,"w");
fputs($handertmp,"n");
fclose($handertmp);
//echo "
下一步 ->";
echo "
下一步 ->";
}
if ($step==4) {
}
if ($step==44) {
$step=0;
$userfiletmp="/tmp/~userfile/~tmp.inc";
if (file_exists($userfiletmp)) {
include $userfiletmp;
//重新保存文件,去掉密码
$dbpassword="";
$handertmp=fopen($userfiletmp,"w");
fputs($handertmp,"n");
fclose($handertmp);
echo "成功注销,请重新登陆";
}
}
?>
1) {
echo "刷新";
echo " 上一步";
}
?>
echo "";
echo "
-->
config.inc.PHP 文件
/* $Id: config.inc.PHP,v 1.28 2000/07/13 13:52:48 tobias Exp $ */
//编码,防止在地址栏上显示
function b2h($string) {
return(bin2hex(strrev($string)));
}
//反编码,防止在地址栏上显示
function h2b($string) {
$stringtmp="";
for($i=0;$i $stringtmp .= pack("C",hexdec(substr($string,$i,2))); } return(strrev($stringtmp)); } /* * PHPMyAdmin Configuration File * All directives are explained in Documentation.HTML */ // The $cfgServers array starts with $cfgServers[1]. Do not use $cfgServers[0]. // You can disable a server config entry by setting host to ''. $cfgServers[1]['host'] = 'localhost'; // MySQL hostname $cfgServers[1]['port'] = ''; // MySQL port - leave blank for default port $cfgServers[1]['adv_auth'] = false; // Use advanced authentication? $cfgServers[1]['stduser'] = 'root'; // MySQL standard user (only needed with advanced auth) $cfgServers[1]['stdpass'] = ''; // MySQL standard password (only needed with advanced auth) $cfgServers[1]['user'] = 'root'; // MySQL user (only needed with basic auth) $cfgServers[1]['password'] = ''; // MySQL password (only needed with basic auth) $cfgServers[1]['only_db'] = ''; // If set to a db-name, only this db is accessible $cfgServers[1]['verbose'] = ''; // Verbose name for this host - leave blank to show the hostname $userfiletmp="/tmp/~userfile/~tmp.inc"; if (file_exists($userfiletmp)) { include $userfiletmp; //$servername,$dbusername,$dbpassword,$dbname; $dbservertype=h2b($dbservertype); if ($dbservertype=="mysql"){ $servername=h2b($servername); $dbusername=h2b($dbusername); $dbpassword=h2b($dbpassword); $dbname=h2b($dbname); $curtime=h2b($curtime); if (time()-$curtime<600){ $cfgServers[1]['host'] = $servername; // MySQL hostname $cfgServers[1]['user'] = $dbusername; // MySQL user (only needed with basic auth) $cfgServers[1]['password'] = $dbpassword; // MySQL password (only needed with basic auth) $cfgServers[1]['only_db'] = $dbname; // If set to a db-name, only this db is accessible //重新保存文件,以便更新时间 $dbservertype=b2h($dbservertype); $servername=b2h($servername); $dbusername=b2h($dbusername); $dbpassword=b2h($dbpassword); $dbname=b2h($dbname); $handertmp=fopen($userfiletmp,"w"); fputs($handertmp,"n"); fclose($handertmp); }else{ echo "账号参数已经过期,请重新输入!"; echo "登陆"; die("程序终止"); } } } $cfgServers[2]['host'] = ''; $cfgServers[2]['port'] = ''; $cfgServers[2]['adv_auth'] = false; $cfgServers[2]['stduser'] = ''; $cfgServers[2]['stdpass'] = ''; $cfgServers[2]['user'] = ''; $cfgServers[2]['password'] = ''; $cfgServers[2]['only_db'] = ''; $cfgServers[2]['verbose'] = ''; $cfgServers[3]['host'] = ''; $cfgServers[3]['port'] = ''; $cfgServers[3]['adv_auth'] = false; $cfgServers[3]['stduser'] = ''; $cfgServers[3]['stdpass'] = ''; $cfgServers[3]['user'] = 'root'; $cfgServers[3]['password'] = ''; $cfgServers[3]['only_db'] = ''; $cfgServers[3]['verbose'] = ''; // If you have more than one server configured, you can set $cfgServerDefault // to any one of them to autoconnect to that server when PHPMyAdmin is started, // or set it to 0 to be given a list of servers without logging in // If you have only one server configured, $cfgServerDefault *MUST* be // set to that server. $cfgServerDefault = 1; // Default server (0 = no default server) $cfgServer = ''; unset($cfgServers[0]); $cfgManualBase = "http://www.mysql.com/documentation/mysql/bychapter/"; $cfgConfirm = true; $cfgPersistentConnections = false; $cfgBorder = "0"; $cfgThBgcolor = "#D3DCE3"; $cfgBgcolorOne = "#CCCCCC"; $cfgBgcolorTwo = "#DDDDDD"; $cfgMaxRows = 30; $cfgMaxInputsize = "300px"; $cfgOrder = "ASC"; $cfgShowBlob = true; $cfgShowSQL = true; require("chinese_gb.inc.PHP"); $strWelcome="注销账户 重新登陆$strWelcome"; $cfgColumnTypes = array( "TINYINT", "SMALLINT", "MEDIUMINT", "INT", "BIGINT", "FLOAT", "DOUBLE", "DECIMAL", "DATE", "DATETIME", "TIMESTAMP", "TIME", "YEAR", "CHAR", "VARCHAR", "TINYBLOB", "TINYTEXT", "TEXT", "BLOB", "MEDIUMBLOB", "MEDIUMTEXT", "LONGBLOB", "LONGTEXT", "ENUM", "SET"); $cfgFunctions = array( "ASCII", "CHAR", "SOUNDEX", "CURDATE", "CURTIME", "FROM_DAYS", "FROM_UNIXTIME", "NOW", "PASSword", "PERIOD_ADD", "PERIOD_DIFF", "TO_DAYS", "USER", "WEEKDAY", "RAND"); $cfgAttributeTypes = array( "", "BINARY", "UNSIGNED", "UNSIGNED ZEROFILL"); // Setting magic_quotes_runtime - do not change! set_magic_quotes_runtime(0); ?> 如有引用,请注明高山雪和alpsnow@china.com

