V dřívějším článku jsem psal o KeePassu, který dokáže v Chrome doplnit přihlašovací údaje. Bohužel umí doplnit pouze jméno a heslo. Z toho důvodu jsem si vytvořil plugin na doplnění ostatních políček.
Použití a stáhnutí
Pokud si stáhnete libovolný plugin ať už od autora, či komunitních přispěvovatelů, budete potřebovat soubor plugin.php, který dané pluginy dokáže spustit. Vše je dobře popsané na stránce o rozšířeních. Do pole plugins si vložíme novou instanci našeho pluginu, a můžeme jej používat.
Kompletní skript můžete stáhnout na GitHubu
$plugins = array( /* Parametry pluginu 1. typ databáze - pro použití MySQL zadejte server 2. server - defaultně localhost 3. login - přihlašovací jméno 4. heslo - VYPLŇTE POUZE POKUD JSTE NA LOCALHOSTU 5. název DB - název databáze do které se adminer přepne */ new FillLoginForm("server","","root","","") );
Vytváříme plugin
Pro vytvoření pluginu si vytvoříme nový soubor, který uložíme do složky plugins. V souboru vytvoříme novou třídu, ve které můžeme přepsat různé metody, které Adminer používá. Pro nás je důležitá funkce loginForm, která se stará o vykreslení přihlašovacího formuláře.
Pokud funkce vrátí null, Adminer poté zavolá i svou metodu. Tím se nepřepíše základní chování, jen jej můžeme upravit. Protože formulář budeme vyplňovat JavaScriptem, nemusíme přepisovat celý formulář, stačí jen nad něj vložit zmíněný JavaScript.
Jak funguje
V konstruktoru umožníme předat 5 parametrů: typ DB, server, jméno, heslo a název databáze. Tyto hodnoty si uložíme jako instanční proměnné, které poté budeme vkládat do formuláře. Zároveň musíme ošetřit, aby nebyl formulář již vyplněný předchozí akcí, například špatné přihlášení. Poté již stačí samotné doplnění a je hotovo.
Pro doplnění využijeme čistý JavaScript, bez frameworků. Pro jednoduchost jsem se rozhodl využít querySelector, který starší prohlížeče nemusejí podporovat. Ukázka kódu doplnění jednoho pole
document.addEventListener("DOMContentLoaded", function(event) { ... <?php if(!empty($this->name)){ ?> var l = document.querySelector("input[name='auth[username]']"); if(l && l.value.trim() == ""){ l.value = "<?php echo $this->name ?>"; } <?php }?> ... });
Pokud máte nápady na pluginy, vlastní jste si napsali nebo máte problém s jeho spuštěním, napište mi do komentářů.
K tomuto článku již není možné přidávat další komentáře
Komentáře
Ahoj, chtěl bych poprosit o pomoc,
použil jsem plugin na těchto www, jako i příklad přihlášení - https://www.adminer.org/cs/extension/
A mám sejný výsledek.
Musím kliknout na tlačítko přihlásit - nic není potřeba vyplňovat, ale nutné kliknout na tlačítko.
https://jurka.8u.cz
můžeš mi prosím poradit co je třeba změnit, aby hned po otevření naběhlo na požadovanou tabulku.
Děkuji
Jura
Na konec callbacku, tedy před
});</script>
stačí přidat:Pro Editor
qs("form input[type=submit]").click()
Pro Adminer je případně lepší použít
qs("form input[type=submit]:not(.hidden)").click()
Ahoj, děkuji prosím ještě o radu jestli je nějaká funkce pro otevření tabulky "mytable" po přihlášení do databáze. ?
Je nějaká funkce stejná jako když přidám za url.. index.php?select=mytable
function tableopen($tableSelect) {
return ($tableSelect['mytablet']);
}
Pokud taková je, tak o ní nevím. Bude potřeba projít https://www.adminer.org/cs/extension/#api