找到了: 在common.inc.php里面大概第945行:// Connects to the server (validates user's login) $userlink = PMA_DBI_connect($cfg['Server']['user'], $cfg['Server']['password'], false);
前面我已经说了 $GLOBALS['PHP_AUTH_USER'] = $_REQUEST['pma_username']; $GLOBALS['PHP_AUTH_PW'] = empty($_REQUEST['pma_password']) ? '' : $_REQUEST['pma_password']; 这就是缓存传入的用户名和口令的 当然还有几处类似的地方当你连接 mysql 时需要执行 mysql_connect('localhost', $username, $parssword); 这样是吧? 这个 $username 和 $parssword 不就是传入的或预置的用户名和口令吗 这就是 phpmyadmin 让你输入的用户名和口令和口令,是用于连接数据库的 当数据库还没有连接时,phpmydamin 如何到 mysql 中去查找用户名和口令呢? 那么如果数据库已经连接上了,验证这个用户名和口令又有什么用呢? 当然,连接时 mysql 本身也要去 user 表验证用户名和口令的,但你是干预不了的这和你的应用系统是不一样的,你的应用系统的用户名和口令的确是要在连接mysql后去表中验证用户名和口令 估计你把这两个混淆了
phpmyadmin 本身是不需要登陆的
需要输入的是访问数据库的用户名和口令
因此 phpmyadmin 没有提供验证,也无法判断登入 mysql 的用户名和口令是否合法如果你连你的 phpmyadmin 的入口都公开了出来,那还担心人家“扫”干什么?
版主,不是我主动公开的,也许是黑客通过某种方法探测到的。还有呀: if (! empty($_REQUEST['pma_username'])) {
// The user just logged in
$GLOBALS['PHP_AUTH_USER'] = $_REQUEST['pma_username'];
$GLOBALS['PHP_AUTH_PW'] = empty($_REQUEST['pma_password']) ? '' : $_REQUEST['pma_password'];
if ($GLOBALS['cfg']['AllowArbitraryServer'] && isset($_REQUEST['pma_servername'])) {
$GLOBALS['pma_auth_server'] = $_REQUEST['pma_servername'];
}
return true;
}我怎么看,都觉得这个不是验证用户名登录的地方呀??是不是在其它地方??
我没说那是用户验证吧?我只是说与登录名相关,是吧?
况且,我再三的说了,phpmyadmin是不需要登录的,用户登录只是为了连接mysql而设的
我想版主的意思是 phpmyadmin只是提供接口传入mysql用户名和密码进行连接的。所以应该找具体在哪里执行mysql_connect(xx,xx,xx),然后对连接的状态进行判断。至于你说的执行这句sql,应该是在mysql数据库内部执行的了;或许mysql自身有个表是用来放用户信息的。
关键是phpMyAdmin里验证密码的地方在那里,找不到呀!!!!!!
要说几遍才能明白呢?一般使用 phpMyAdmin 时都将用户名和密码写在 config 文件里的用户名或密码错了,就连不上 mysql,此时 mysql 会给出相应的错误信息
这和你到银行取钱是一个道理,柜员受理你的业务,密码得由你自己输,输错了他就转告你错了
找到了:
在common.inc.php里面大概第945行:// Connects to the server (validates user's login)
$userlink = PMA_DBI_connect($cfg['Server']['user'], $cfg['Server']['password'], false);
$GLOBALS['PHP_AUTH_USER'] = $_REQUEST['pma_username'];
$GLOBALS['PHP_AUTH_PW'] = empty($_REQUEST['pma_password']) ? '' : $_REQUEST['pma_password'];
这就是缓存传入的用户名和口令的
当然还有几处类似的地方当你连接 mysql 时需要执行 mysql_connect('localhost', $username, $parssword); 这样是吧?
这个 $username 和 $parssword 不就是传入的或预置的用户名和口令吗
这就是 phpmyadmin 让你输入的用户名和口令和口令,是用于连接数据库的
当数据库还没有连接时,phpmydamin 如何到 mysql 中去查找用户名和口令呢?
那么如果数据库已经连接上了,验证这个用户名和口令又有什么用呢?
当然,连接时 mysql 本身也要去 user 表验证用户名和口令的,但你是干预不了的这和你的应用系统是不一样的,你的应用系统的用户名和口令的确是要在连接mysql后去表中验证用户名和口令
估计你把这两个混淆了
有个奇怪的事要问下:验证码加上了,但验证码生成的session或者cookie进不了phpMyAdmin里面,换句话说:phpMyAdmin应该在某个地方把session给注销掉了。目前验证码是可以正常显示,但使用不了。