我正在运行一个托管MySQL实例(包含多个数据库)和一些SQLite文件的服务器。我想使用Adminer来管理所有这些,前提是用户提供了有效的凭据。此外,还应填充数据库列表。
对于MySQL,可以使用有效的数据库用户,并且连接可以直接使用。但是,必须明确添加SQLite支持。 Adminer给出了这个错误:
Implement login() method to use SQLite.
Adminer
类以启用SQLite登录?答案 0 :(得分:7)
此答案适用于Adminer 4.2.5版。不幸的是,它对Adminer 4.3.x无效。
您需要覆盖login
类的databases
和Adminer
方法,确保只对SQLite驱动程序执行此操作,而不是在其他情况下。以下代码实现了具有数据库列表的基本登录系统:
<?php
function adminer_object() {
class AdminerSoftware extends Adminer {
function login($login, $password) {
global $jush;
if ($jush == "sqlite")
return ($login === 'admin') && ($password === 'changeme');
return true;
}
function databases($flush = true) {
if (isset($_GET['sqlite']))
return ["/path/to/first.db", "/path/to/second.db"];
return get_databases($flush);
}
}
return new AdminerSoftware;
}
include "./adminer-4.2.5.php";
可以调整代码以支持多个用户。将文件index.php
保存在adminer-4.2.5.php
所在的同一目录中。确保调整用户名,密码和数据库路径。
以下是一些重要的评论:
login
方法未正确命名,这是Adminer执行的初步检查true
like the original class does