Merkmale Dokumentation Screenshots Clients Kontakt
Autor: Jakub Vrána, vznik: březen 2003
Adminer slouží pro generování administračních rozhraní aplikací v jazyce PHP na základě komentovaného skriptu pro vytvoření MySQL databáze dané aplikace. Vygenerované rozhraní pracuje s databázi aplikace na vyšší úrovni než např. phpMyAdmin a uživatelům by mělo zajišťovat stejnou pohodlnost práce, na kterou jsou zvyklí v ručně vytvořených administračních rozhraních.
Vygenerované rozhraní lze snadno graficky přizpůsobit konkrétním potřebám každé aplikace. Lze měnit i funkčnost vygenerovaných skriptů (např. pro implementaci funkcí, které Adminer nepodporuje), při případném další generování tato přidaná funkčnost však zmizí.
Administrační rozhraní může mít libovolný vzhled s možností jakéhokoliv rozmístění navigačních prvků.
Aplikace dovoluje vytvořit tabulku s uživatelskými jmény a hesly. Tito uživatelé si pak mohou své záznamy administrovat po přihlášení.
Tabulky mohou být vzájemně provázané. S provázáním lze pracovat dvěmi způsoby - buď jsou u každého záznamu závislé tabulky zobrazeny hodnoty nadřazené tabulky a při editaci lze vybírat příslušnou hodnotu pouze z položek nadřazené tabulky nebo se závislé tabulky zobrazují a editují přímo na stránce s nadřazeným záznamem pomocí plovoucího rámu.
U každé tabulky lze nastavit, zda lze položky v ní prohlížet, přidávat, editovat a mazat (což je vhodné pro tabulky, do které se data zadávají externě).
Výpis dlouhých tabulek lze rozdělit na stránky s definovaným počtem záznamů. Lze určit, jak se mají záznamy řadit, při více nastavených řazeních lze v administračním rozhraním vybrat, které se má použít. Administrační rozhraní také umožňuje ruční řazení záznamů (zadáním pozice, na které chceme, aby se záznam zobrazoval). Nad libovolným sloupcem lze vytvořit vyhledávání s operátory <, =, obsahuje apod.
Libovolné sloupce mohou být nastaveny tak, že při splnění definované podmínky budou označeny jako neplatné případně se v administračním rozhraní nebudou zobrazovat vůbec. Je vhodné tuto vlastnost použít také v prezentaci.
U každého sloupce lze nastavit, zda se má vypisovat při prohlížení a zda ho lze editovat. Libovolný sloupec lze označit jako povinný pro zadávání a lze nastavit jeho výchozí hodnota. Lze také nastavit, zda musí být hodnoty sloupce unikátní (např. e-maily).
Administrační rozhraní podporuje práci s těmito datovými typy: řetězec nastavitelné délky, datum, čas, datum a čas, čísla různých délek, pravdivostní hodnota, výčet, množina, heslo, libovolně dlouhý text, soubory, obrázky. U těchto datových typů se data zobrazují a zadávají v uživatelsky přívětivé podobě. Kromě kontroly platnosti zadané hodnoty v závislosti na typu sloupce lze nastavit i další podmínky pro zadávanou hodnotu (např. číslo < 5). Lze nastavit, zda se výčet bude zadávat pomocí listboxu nebo pomocí přepínačů, množina potom pomocí vícenásobného listboxu nebo pomocí zaškrtávacích políček.
Kromě kontroly zadávané hodnoty podle typu a podle definované podmínky lze kontrolovat i tyto speciální hodnoty: URL, e-mail, v budoucnu také telefon, PSČ, IP adresa, HTML barva, regulární výraz.
Při editaci obrázků lze uvést šířku, výšku nebo oba rozměry, které se následně zobrazují jako doporučené. Lze také nastavit, že na zadané rozměry se budou obrázky budou převzorkovávat a originál bude dostupný po kliknutí. U obrázků lze nastavit, zda se má při výpisu zobrazovat pouze jejich název s obrázkem dostupným na kliknutí nebo rovnou jejich grafická podoba.
Pro editaci textových polí lze využít vizuální HTML editor s podporou zarovnávání, tučného písma a kurzívy, nastavování velikosti písma, vkládání tabulek, obrázků a odkazů. Editor lze přepnout i na práci přímo s HTML kódem. Obrázky se spravují pomocí administračního rozhraní.
Administrační rozhraní také umožňuje hromadné rozesílání korespondence na e-maily v tabulkách a to buď v textu s diakritikou nebo v HTML s obrázky. V administračním rozhraní lze také editovat vzory rozesílaných zpráv (odesílatel, předmět a tělo zprávy).
Aplikace je pro přehlednost rozdělena do několika souborů. Jednotlivé soubory však mají význam jedině při vložení do hlavního souboru index.php, samostatně nejsou spustitelné. Parametrem při spuštění je název souboru, ve kterém je uložen popis databáze.
Význam jednotlivých souborů je popsán v souboru descript.ion.
Vygenerované administrační rozhraní se ukládá do aktuálního adresáře, skript se tedy doporučuje spouštět z adresáře, ve kterém má být rozhraní uloženo - např:
php /adminer/index.php db.sql
Skript rozpoznává dále popsané SQL konstrukce. Na jejich pořadí a na velikosti písmen nezáleží. Nezáleží ani na počtu bílých znaků (tabulátory a mezery), pouze za uvozením komentáře -- musí následovat alespoň jeden bílý znak, stejně jako je to vyžadováno v MySQL. Neznámé konstrukce se ignorují a v případě, že není nastavena direktiva WARNINGS, se ani nevypisují chybové hlášky. Aplikace nerozpoznává komentáře /* */
, což je užitečné v případě, kdy chceme určitou část skriptu zpracovat Adminerem, ale nechceme, aby ji zpracovalo MySQL. Většina konstrukcí je ale rozpoznávána pouze na začátku řádku, proto by /*
mělo být na samostatném řádku.
Pomocí tohoto komentáře lze upravit chování Admineru. Popis možných direktiv je uveden v další kapitole.
Daná databáze se použije ve funkci mysql_select_db
. Pokud konstrukce ve skriptu není, funkce mysql_select_db
se nevolá. Okolo názvu databáze jsou povolené zpětné apostrofy.
Přihlašovací údaje se použijí ve funkci mysql_pconnect
. Pokud konstrukce ve skriptu není, volá se mysql_pconnect
bez parametrů. Okolo jména uživatele a názvu serveru mohou být apostrofy, kolem hesla apostrofy být musí.
Umožňuje z administračního rozhraní odstranit některé možnosti práce s tabulkou. Rozpoznávaná práva jsou SELECT, INSERT, UPDATE a DELETE, ostatní práva se ignorují. Při odebrání práva SELECT nelze provádět žádné operace.
Tento příkaz zajistí nastavení znakové sady pro komunikaci s databází po připojení k ní. Zároveň určuje kódování SQL skriptu a vygenerovaného administračního rozhraní.
Tento speciální komentář způsobí v souboru menu.inc.php vložení prázdného řádku na místo, kde je uveden. Pokud je za třemi pomlčkami další text, zobrazí se jako nadpis sekce.
Při provedení INSERT, UPDATE nebo DELETE spustí definovaný příkaz. Příkaz může být jen jeden a smí obsahovat odkazy NEW.
na nové hodnoty sloupců nebo odkazy OLD.
na staré hodnoty.
Rozpoznávaná definice prvního řádku popisu tabulky. Popis se používá v nadpisech v administračním rozhraní a při odkazech na tuto tabulku. Jestliže popis chybí, použije se název tabulky. Pokud existuje část COMMENT u zakončení definice tabulky, použije se pro popis ta.
V komentáři u tabulky mohou být uvedeny následující modifikátory:
U spojovacích tabulek mohou být tyto příznaky:
{SEARCH[ op]} | Podle spojovací tabulky bude možné vyhledávat. |
---|---|
{MULTIPLE_CHECKBOX[ size]} | Obrací chování direktivy MULTIPLE_CHECKBOX, pomocí parametru lze určit velikost výběrového seznamu. |
Na řádcích následujících po začátku tabulky se rozpoznávají následující konstrukce:
Pokud sloupec nemá uveden popis, tak se ignoruje. Pokud není nastavena maximální délka hodnot ve sloupci, použijí se standardní hodnoty (date - 10, datetime - 16, int - 10). U některých typů délka význam nemá (např. bool).
Popis může být také uveden jako součást definice sloupce pomocí COMMENT 'description'. Speciální znaky a konstrukce ale musí být uvedeny za znaky --.
Popis může začínat znakem &, což zajistí, že se tento sloupec nebude vypisovat při prohlížení tabulky, ale pouze v editaci.
Popis dále může začínat znakem *. Tento sloupec se pak bude zobrazovat jako hodnota u propojených tabulek. Jestliže je takto označeno více sloupců, budou se zobrazovat zřetězené mezerou.
Popis může začínat také znakem $, který označuje proměnné. Tabulku, která obsahuje proměnné, nelze zobrazit přímo, ale jenom s uvedením hodnot jejích proměnných. Obvykle se proto proměnné používají u sloupců, které jsou odkazem na jinou tabulku a pro které se odkazy vytvoří u odkazované tabulky.
Pokud popis končí řetězcem v hranatých závorkách, považuje se tento řetězec za jednotku, která se následně zobrazuje vždy vpravo od hodnoty sloupce.
Součástí popisu může být hodnota ve složených závorkách:
Ve složených závorkách může být uvedeno i více hodnot, oddělují se od sebe čárkou a na jejich pořadí nezáleží.
Pokud je v popisu ještě jednou sekvence -- , pak se zbytek popisu ignoruje. To je vhodné pro vytváření skutečných komentářů k databázi, které se ale v administračním rozhraní nemají zobrazovat.
DATE | Administrační rozhraní zobrazuje hodnoty ve formátu d.m.yyyy |
---|---|
TIME | Administrační rozhraní zobrazuje hodnoty ve formátu h:mm:ss |
DATETIME | Administrační rozhraní zobrazuje hodnoty ve formátu d.m.yyyy h:mm |
TIMESTAMP | Slouží pro uložení datu a času modifikace záznamu, nelze změnit |
YEAR | Slouží pro uložení roku 1901 až 2155. |
INT | Při zadávání je kontrolována celočíselnost. Dále jsou podporovány i typy tinyint, smallint, mediumint a bigint. Pokud je uvedeno unsigned, je kontrolována také nezápornost. |
DECIMAL | Při zadávání je kontrolována číselnost a počet desetinných míst |
FLOAT | Při zadávání je kontrolována číselnost |
BOOL | Při editaci se zobrazuje jako checkbox |
ENUM | Při editaci se zobrazuje jako <select> |
SET | Při editaci se zobrazuje jako <select multiple> |
TEXT | Při editaci se zobrazuje jako <textarea> . Podporovány jsou i typy tinytext, mediumtext a longtext, liší se od sebe počtem řádků a sloupců zobrazených při editaci. |
BLOB | Slouží pro ukládání souborů přímo do tabulky. Podporovány jsou i typy tinyblob, mediumblob a longblob, liší se od sebe maximální velikostí ukládaného souboru. Tento typ je u sloupců bez příznaku {FILE_DATA} zastaralý. |
Všechny další datové typy, které mají uvedenou délku, se berou jako textové položky.
Zadání sloupců s modifikátorem NOT NULL je v administračním rozhraní povinné. Kontrola je prováděna JavaScriptem při zadávání dat. S výjimkou číselných, datumových a vazebních sloupců však administrační rozhraní NULL hodnoty do databáze neukládá ani u ostatních sloupců, vždy se ukládají alespoň prázdné hodnoty.
Při explicitním uvedení modifikátoru NULL administrační rozhraní u sloupce vytvoří zaškrtávací políčko, kterým bude možné zadat prázdnou hodnotu.
Jestliže je vytvářen nový záznam, použije se uvedená hodnota jako přednastavená.
Příznak REFERENCES je pro generování administračního rozhraní nesmírně důležitý. Popisuje totiž vazby mezi tabulkami a tím zachycuje, jak mají být tabulky zobrazeny. U sloupce REFERENCES hraje velkou roli to, zda figuruje jako proměnná (popis je uvozen znakem $) nebo jako obyčejný sloupec.
Jestliže sloupec REFERENCES figuruje jako proměnná, nezobrazuje se tento sloupec při výpisu a není možné ho upravovat. Tabulka se také nezobrazuje mezi hlavními tabulkami na titulní stránce, ale odkaz na ni se zobrazuje pouze u řádků tabulek, na které se odkazuje.
Jestliže sloupec REFERENCES není proměnná, chápe se tento sloupec jako obyčejná hodnota, která je však propojena s jinou tabulkou. Při editaci se to projeví zobrazením výběrového seznamu s hodnotami z odkazované tabulky, při výpisu potom vypsáním odpovídající hodnoty z odkazované tabulky.
Příznak REFERENCES smí být uveden pouze u jednotlivých sloupců, přestože norma dovoluje jeho uvedení i pro celou tabulku a s využitím více sloupců odkazující tabulky. Pokud vede odkaz na primární klíč tabulky, tak jsou při výpisu vytvořeny odkazy na editaci zobrazeného záznamu.
Příznak ON DELETE CASCADE způsobí, že při odstraňování řádku v odkazované tabulce bude smazán také řádek se stejnou hodnotou v této tabulce. Smazání závislých záznamů proběhne až po úspěšném smazání hlavního záznamu. Je podporováno pouze jednoúrovňové kaskádové mazání (při kaskádovém mazání závislých záznamů se již nemažou záznamy, které závisí na nich). Příznak ON DELETE SET NULL funguje podobně, ale místo smazání řádku nastaví sloupci prázdnou hodnotu. Při použití příznaku ON DELETE RESTRICT bude smazání položky zakázáno, pokud se na ni odkazují další položky.
U sloupce nebo u tabulky může být uveden příznak CHECK, který zajistí, že hodnota sloupce bude při zadávání omezena danou hodnotou. Příkladem může být CHECK (znamka <= 5). Více příznaků CHECK je povoleno, stejně jako uvedení více podmínek oddělených AND v jednom CHECK. Není podporován operátor OR, hodnota navíc může být omezena pouze konstantou. MySQL podporuje pouze tabulkové CHECK a ještě navíc s uvedením klíčového slova CONSTRAINT - tedy např. CONSTRAINT znamka CHECK (znamka <= 5).
Použití primárního indexu Adminer dovoluje pouze s jednotlivým sloupcem. Primární index se v administračním rozhraní používá pro jednoznačnou identifikaci dat v tabulce. Jestliže tento index není uveden, tabulka bude považována za jednořádkovou tabulku - data do ní nebude možné přidávat ani je z ní mazat. Jednořádkové jsou obvykle tabulky s parametry aplikace.
První neprimární index se používá pro řazení hodnot při výpisu dat z tabulky. Pokus o vícenásobné uložení unikátního klíče je administračním rozhraním sledován. Za názvem každého sloupce v indexu může být uvedeno klíčové slovo DESC, které zajistí, že data budou podle tohoto sloupce tříděna sestupně. Např. INDEX (znamka, vytvoreno DESC).
Jestliže je potřeba v databázi vytvořit jiný index, než v jakém pořadí chceme data vypisovat v administračním rozhraní, můžeme do komentáře indexu napsat speciální verzi pro Adminer. Např. tedy UNIQUE (jazyk, idf), -- (idf, jazyk). Pokud do komentáře uvedeme pouze prázdné závorky, bude index Adminer ignorovat.
Index může mít uveden příznak {GROUP[ sloupce]}, který zajistí, že podle jeho sloupců bude možné řádky v tabulce seskupit.
Pro uvedené sloupce bude vytvořeno fulltextové vyhledávání ve variantě IN BOOLEAN MODE.
Tento speciální komentář způsobí v editaci vložení oddělovače za položku, po které je uveden. Pokud je za třemi pomlčkami další text, zobrazí se jako nadpis sekce.
Ukončení definice tabulky. Závorka musí být první nebílý znak v řádku. Komentář se použije jako popis tabulky.
Pokud je první sloupec v tabulce označen jako proměnná, druhý sloupec nemá popis a oba mají referenci na nějakou tabulku, chápe se tato tabulka jako spojovací. Při editaci tabulky odkazované prvním sloupcem je potom zobrazen vícenásobný výběr s hodnotami podle tabulky odkazované druhým sloupcem. Jako popis tohoto pole se použije název spojovací tabulky, zaškrtnuté jsou hodnoty podle spojovací tabulky. Při aktualizaci záznamu se nejprve smažou všechny staré hodnoty a následně se nastaví hodnoty nové. Při výpisu se zobrazuje počet položek - jejich hodnota se zobrazí po najetí myši. Pokud je nastavena pouze jedna hodnota, rovnou se vypíše, pokud není nastavena žádná, nevypíše se nic.
Tabulka může mít na rozdíl od všech ostatních tabulek primární klíč přes dva sloupce. Pokud tabulka obsahuje další sloupce, je možné jejich hodnoty vyplnit přímo z editace nadřazené tabulky. Tabulka také může mít uveden modifikátor {SEARCH}, který umožní prohledávání přes tuto tabulku.
Chování programu je možné ovlivnit nastavením direktiv v komentáři -- adminer:
LOGIN_USER | Login požadovaný pro vstup do administračního rozhraní. Jestliže není uveden, není přihlašovací jméno a heslo pro vstup do administračního rozhraní vyžadováno. |
---|---|
LOGIN_PASSWORD | SHA1 hesla vyžadovaného pro vstup do administračního rozhraní. Pokud není nastaveno, vyžaduje se heslo stejné s loginem. |
APP_NAME | Název aplikace použitý v záhlaví domácí stránky. |
SYNTAX_CHECK | Po vygenerování každého souboru bude provedena jeho syntaktická kontrola příkazem php -l. Jako hodnotu je možné použít cestu souboru php. |
LANG | Textové řetězce budou vytvořeny v zadaném jazyce. Povolená hodnota je cs (čeština) nebo sk (slovenština), jinak budou řetězce anglicky. Pokud se direktiva použije s prázdnou hodnotou, tak bude výpis textových řetězců obalen funkcí lang , která zajišťuje překlad textů do nastaveného jazyka administračního rozhraní. |
WARNINGS | Během generování budou zobrazována různá varování. |
HTML_EDIT | Pro HTML texty bude použit HTML editor. Při uvedení hodnoty fck bude použit FCKeditor. |
FILE_NAMES | K ukládaným souborům se kromě primárního klíče přidruženého záznamu do názvu vloží i původní název souboru (což může být užitečné pro vyhledávače). Hodnota 2 způsobí, že se v názvech souborů primární klíč nebude používat. |
MULTIPLE_CHECKBOX | U sloupců typu set a u spojovacích tabulek nebude zobrazen seznam hodnot značkou <select mutliple> , ale budou použity značky <input type="checkbox"> . |
MASTER_CLIENT | Z hlavního editačního rozhraní bude možné editovat také tabulky svázané s tabulkou se sloupcem {LOGIN}. Jinak bude možné tyto tabulky editovat pouze z administračního rozhraní vytvořeného pro tabulku se sloupcem {LOGIN}. |
APP_DESIGN | Soubory pro generování se hledají nejprve v adresáři s názvem hodnoty této konstanty. Jestliže generovaný soubor v tomto adresáři existuje, je použit pro část generovaného souboru, která se vypisuje. Jinými slovy řečeno, soubory v tomto adresáři obsahují pouze design, dynamická část je vždy stejná. Příkladem hodnoty, na kterou může být konstanta nastavena, je "design". Kromě toho mohou být v podadresáři copy tohoto adresáře soubory, které se zkopírují a případně přepíší vygenerované soubory. |
SEPARATE_INCLUDE | Soubory *.inc.php budou umístěny do tohoto adresáře. Jinak budou umístěny spolu s ostatními soubory. Obdobně se chovají konstanty SEPARATE_CSS, SEPARATE_JS a SEPARATE_IMG. |
HOME_LINKS | Na všech stránkách s výpisem tabulky bude odkaz na domácí stránku. Pokud design aplikace obsahuje tento odkaz na jiném místě, je vhodné tuto konstantu nenastavovat. |
DATE_INPUT | Určuje, jakým způsobem bude zadáváno datum a čas. Hodnota SELECT zajistí zadávání pomocí výběrových polí, hodnota CALENDAR pomocí textového pole s kalendářem, jakákoliv jiná hodnota pomocí běžného textového pole. |
REF_LINKS | Určuje, zda budou vytvořeny odkazy na závislé tabulky. |
CSRF_DEFENSE | Určuje, zda budou editační formuláře chráněny proti útoku Cross-Site Request Forgery. V tom případě se do editačních formulářů přidá náhodný token autorizující editaci nebo smazání daného záznamu a tato operace bude provedena pouze v případě, že tento token dorazí. Použitý mechanismus dovoluje otevření více editačních oken třeba i se stejným záznamem, informace o platných tokenech se uchovává v session proměnné. |
V adresáři určeném konstantou APP_DESIGN může být soubor postprocess.php, ve kterém mohou být definované funkce postprocess_table($file, $table_name)
, postprocess_edit($file, $table_name)
, postprocess_bulk($file, $table_name)
a postprocess_files($file, $filename)
. Jestliže soubor existuje a tyto funkce jsou definované, zavolají se bezprostředně před uložením každého souboru table.php, table-1.php resp. table-2.php s obsahem zapisovaného souboru a do souborů se zapíše hodnota, kterou tyto funkce vrátí.
Funkce se hodí především na změnu designu nebo funkčnosti, kterou Adminer jiným způsobem neumožňuje.
Po zpracování databázového skriptu je vytvořena následující struktura. Z této struktury se následně generuje administrační rozhraní.
$tables = array( $table_name => array( 'desc' => "Popis tabulky", 'columns' => $columns, 'variables' => $columns, 'default_columns' => array("Sloupec označený *", ...), 'primary' => "Primární klíč", 'indexes' => array("Sloupce v 1. indexu", ...), 'referenced' => array($table_name => array($its_col => $my_col, ...), ...), 'search' => array($column_name => $operator, ...), 'disabling' => array($column_name => "$column_name $expression", ...), 'check' => array($column_name => array("$expression", ...), ...), ... ), ... );
Kromě uvedených hodnot mohou být pod dalšími klíči uvedené různé příznaky (např. název sloupce {LOGIN} nebo příznak oddělovače za tabulkou). Popis proměnné $columns následuje:
$columns => array( $column_name => array( 'type' => "Databázový typ", 'length' => "Šířka sloupce", 'desc' => "Popis", 'ref_table' => $table_name, 'ref_column' => $column_name, ... ) ... );
Stejně jako u tabulek, mohou být jako další klíče uvedeny příznaky sloupců (např. NOT NULL nebo DEFAULT).
index.php | Domácí stránka |
---|---|
default.css | Styl používaný na všech stránkách |
scripts.js | JavaScript funkce používané na všech stránkách |
config.inc.php | Konfigurační údaje specifické pro konkrétní aplikaci |
auth.inc.php | Přihlášení k systému. Vzhledem k posílání HTTP hlaviček musí být na samém začátku všech stránek. |
connect.inc.php | Připojení k databázi |
functions.inc.php | Funkce potřebné pro vygenerované rozhraní |
lib.inc.php | Vložení všech potřebných knihoven kromě hlavičky |
design.inc.php | Definice vzhledu prezentace včetně formálních hlaviček HTML |
menu.inc.php | Hlavní nabídka aplikace |
var.inc.php | Generuje se prázdný, umožňuje vložit např. proměnné používané v aplikaci |
.htaccess | Nastavení parametrů PHP |
table.php | Výpis hodnot pro každou tabulku |
table-1.php | Editace a aktualizace dat pro každou tabulku |
V souboru menu.inc.php je uveden seznam všech tabulek, které nevyžadují pro své zobrazení žádné parametry neboli tabulek první úrovně. Pomocí příslušných odkazů lze zobrazit obsah tabulky.
Na stránce s výpisem tabulky se zobrazují sloupce, u kterých není nastaveno, aby se nezobrazovaly. Jestliže je u tabulky povolena editace, je možné ji vyvolat odkazem u hlavního sloupce tabulky. Jestliže se na tabulku odkazují další tabulky, je možné jejich obsah pro příslušný řádek vyvolat odkazem u daného řádku tabulky. Pod tabulkou je odkaz pro vložení nové položky.
Jestliže je povoleno vyhledávání, je dále zobrazen vyhledávací formulář.
Na konci stránky je odkaz pro návrat na domácí stránku a v případě, že se na zobrazenou tabulku odkazují jiné tabulky, pak také odkaz na tyto tabulky.
Editace probíhá na speciální stránce, kde se po odeslání formuláře také provede aktualizace. Jestliže je aktualizace úspěšná, proběhne přesměrování na stránku s výpisem dat, kde je zobrazena informace o výsledku provedené operace. Jestliže je aktualizace neúspěšná, je o tom uživatel informován a formulář se zobrazí znovu s daty, která dříve vyplnil. Formulář pro editaci a přidávání je totožný, odchylky se řeší přímo ve vygenerované stránce.
Přehled použitých stylů je uveden v souboru default.css.
Na každé stránce je ověřována přítomnost přihlašovacích údajů. Jestliže přihlašovací údaje chybí, je zobrazen formulář pro jejich zadání. Po jeho vyplnění se přihlašovací údaje uloží do session proměnné, takže na dalších stránkách jsou již k dispozici. Přihlášení lze tedy realizovat na jakékoliv stránce administračního rozhraní, přičemž po přihlášení je zobrazena dotazovaná stránka. Tento systém také umožňuje pohodlnou práci v případě, kdy dojde k automatickému odhlášení po určité době nečinnosti způsobenému vypršením session proměnné (ovlivňuje konfigurace PHP).
Adminer se dá použít pro širokou škálu aplikací a snadným způsobem umožňuje vytvořené rozhraní dané aplikaci graficky přizpůsobit. Vytváří jednotný a přehledný kód, do kterého lze snadno doplňovat další funkčnost.