Я использую сервер, на котором размещены как экземпляр MySQL (с несколькими базами данных), так и несколько файлов SQLite. Я хотел бы использовать Adminer управлять всеми из них, при условии, что действительные учетные данные предоставлены пользователями. Кроме того, список баз данных должен быть заполнен.
В случае MySQL могут использоваться действительные пользователи базы данных, и соединение работает «из коробки». Тем не менее, поддержка SQLite должна быть добавлена явно. Администратор выдает эту ошибку:
Implement login() method to use SQLite.
Adminer
класс для включения входа в SQLite?Этот ответ относится к 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
метод не имеет правильного имени, это начальная проверка, выполненная администраторомtrue
как в оригинальном классеДругих решений пока нет …