php - 如何扩展 Adminer 以支持带登录的 SQLite 数据库?

标签 php database sqlite adminer

我正在运行一个服务器,它同时托管一个 MySQL 实例(带有多个数据库)和一些 SQLite 文件。我想使用 Adminer管理所有这些,前提是用户提供了有效的凭据。此外,应填充数据库列表。

如果是 MySQL,可以使用有效的数据库用户,并且开箱即用。但是,必须明确添加 SQLite 支持。管理员给出此错误:

Implement login() method to use SQLite.
  • 如何扩展 Adminer 类以启用 SQLite 登录?
  • 我应该怎么做才能填写有效数据库列表?

最佳答案

此答案适用于 Adminer 版本 4.2.5。不幸的是,它对 Adminer 4.3.x 无效。

您需要重写 Adminer 类的 logindatabases 方法,确保您只为 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";

可以修改代码以支持多个用户。在 adminer-4.2.5.php 所在的同一目录中将文件另存为 index.php。确保调整用户名、密码和数据库路径。

这里有一些重要的评论:

  • login 方法未正确命名,这是管理员执行的初始检查
  • 用于具有内置用户功能的数据库,例如MySQL,此方法应始终返回 true like the original class does
  • SQLite 文件没有内置身份验证,因此我们定义了一个人工检查来防止未经授权的访问

结果

List of SQLite databases shown by Adminer

关于php - 如何扩展 Adminer 以支持带登录的 SQLite 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46186925/

相关文章:

iphone - 正确检查 nil sqlite 文本列

sqlite - 什么时候调用 SQLiteOpenHelper onCreate 方法?

php - 使用 PHP 时的 CSS 布局问题包括

php - MySQL 通过 PHP 批量插入

php - MySqLi 由于某种原因无法工作

mysql - 如何减少SQL数据库中的自增数?

mysql - 如何为 Tinder 功能构建数据库

php - WHERE NOT EXISTS 语法错误

android - 使用android连接到sql server时设置登录超时

sqlite - 为什么对 Java 应用程序使用 SQLite 而不是 H2