phpMinAdmin – demo
Pro jednoduché vyzkoušení nástroje phpMinAdmin lze použít demo. Nejprve jsem ho vytvořil jednoduchým zkopírováním souboru phpMinAdmin.php
na hosting, uvedením přihlašovacích údajů jako výchozích a automatickým přihlášením uživatele na domácí stránce projektu. Vzápětí ale někdo smazal demonstrační databázi a přestože si uživatelé mohou vytvořit novou, vypadalo demo poněkud prázdně. Uživatelé si navíc přepisovali své změny.
Bylo potřeba s tím něco udělat, ale vytvářet speciální verzi pro demo se mi nechtělo. Využil jsem proto direktivu auto_prepend_file, kterou před vlastní aplikaci vložím následující kód:
<?php session_start(); $_SESSION["databases"][""] = array("p199217_" . substr(session_id(), -8)); if (isset($_GET["logout"])) { mysql_query("DROP DATABASE `" . $_SESSION["databases"][""][0] . "`"); } elseif ($_GET["db"] == $_SESSION["databases"][""][0]) { if (!mysql_select_db($_GET["db"])) { mysql_query("CREATE DATABASE `$_GET[db]`"); mysql_select_db($_GET["db"]); // naplnění databáze testovacími daty } } elseif (strlen($_GET["db"])) { $_GET["db"] = "invalid_database"; } ?>
Každý uživatel má svou databázi odvozenou z jeho session identifikátoru. Využívá se toho, že aplikace kešuje seznam databází (protože na SourceForge.net a asi i jinde trvá jeho získání poměrně dlouho) a tato keš se jednoduše inicializuje. Pokud databáze daného uživatele neexistuje, tak se vytvoří a naplní testovacími daty. Pokud se uživatel pokusí pracovat s jinou databází, tak se místo ní nastaví databáze, ke které se nepodaří přihlásit. Při odhlášení uživatele se databáze smaže, což se dělá i v pravidelném intervalu:
<?php $active_dbs = array(); foreach (glob("sess_*") as $filename) { $active_dbs[substr($filename, -8)] = true; } $result = mysql_query("SHOW DATABASES"); while ($row = mysql_fetch_row($result)) { if (!isset($active_dbs[substr($row[0], 8)])) { mysql_query("DROP DATABASE `$row[0]`"); } } mysql_free_result($result); ?>
Uvedené řešení není sice zcela neprůstřelné, další ošetření by ale už vyžadovalo zásah přímo do aplikace, do čehož se mi moc nechce.
Diskuse
Marty:
Jen drobné upozornění, když kliknu na odkaz demo v tomto článku (http://phpminadmin.sourceforge.net/phpMinAdmin.php), otevře se phpMinAdmin s žádostí o zadání serveru, jména a hesla. Pokud kliknu na domovskou stránku projektu z phpMinAdmina (http://phpminadmin.sourceforge.net/) a pak se vrátím kliknutím na demo (http://phpminadmin.sourceforge.net/phpMinAdmin.php), tak vše běží podle popisu v článku. Problém bude zřejmě v inicializaci sessions.
Jinak hezký kabátek, určitě začnu používat :-)

Jakub Vrána
:
Ano, to je očekávané chování. phpMinAdmin při prvním přístupu vyžaduje přihlášení. Na titulní stránce se přihlášení zfalšuje, z jiného serveru to ale samozřejmě nejde.


Forrest79:
Ahoj,jenom jedna drobnost k jinak skvelymu phpminadminu. Pri prihlaseni je poslicku s username omezeny na 16 znaku. Nahral jsem aplikaci na server, kde mam username 22 znaku... Musel jsem to pak rucne upravit v kodu. Tak jenom jestli by to neslo trochu rozsirit. Jinak diky!
Jakub Vrána
:
Podle dokumentace a tabulek v mysql databázi je sice maximální délka uživatelského jména právě 16 znaků, ale protože už to reportoval jeden člověk, tak už jsem to v SVN verzi dříve opravil.


Diskuse je zrušena z důvodu spamu.

