Allow specifying database in login form (bug #3499359)

This commit is contained in:
Jakub Vrana 2012-05-14 00:24:23 -07:00
parent f595f9313e
commit 8be29afb9b
5 changed files with 9 additions and 4 deletions

View file

@ -67,6 +67,7 @@ class Adminer {
<tr><th><?php echo lang('Server'); ?><td><input name="auth[server]" value="<?php echo h(SERVER); ?>" title="hostname[:port]">
<tr><th><?php echo lang('Username'); ?><td><input id="username" name="auth[username]" value="<?php echo h($_GET["username"]); ?>">
<tr><th><?php echo lang('Password'); ?><td><input type="password" name="auth[password]">
<tr><th><?php echo lang('Database'); ?><td><input name="auth[db]" value="<?php echo h($_GET["db"]); ?>">
</table>
<script type="text/javascript">
var username = document.getElementById('username');

View file

@ -28,8 +28,9 @@ if ($auth) {
|| DRIVER != $auth["driver"]
|| SERVER != $auth["server"]
|| $_GET["username"] !== $auth["username"] // "0" == "00"
|| DB != $auth["db"]
) {
redirect(auth_url($auth["driver"], $auth["server"], $auth["username"]));
redirect(auth_url($auth["driver"], $auth["server"], $auth["username"], $auth["db"]));
}
} elseif ($_POST["logout"]) {
if ($token && $_POST["token"] != $token) {

View file

@ -418,15 +418,17 @@ function set_session($key, $val) {
* @param string
* @param string
* @param string
* @param string
* @return string
*/
function auth_url($driver, $server, $username) {
function auth_url($driver, $server, $username, $db = null) {
global $drivers;
preg_match('~([^?]*)\\??(.*)~', remove_from_uri(implode("|", array_keys($drivers)) . "|username|" . session_name()), $match);
preg_match('~([^?]*)\\??(.*)~', remove_from_uri(implode("|", array_keys($drivers)) . "|username|" . ($db !== null ? "db|" : "") . session_name()), $match);
return "$match[1]?"
. (sid() ? SID . "&" : "")
. ($driver != "server" || $server != "" ? urlencode($driver) . "=" . urlencode($server) . "&" : "")
. "username=" . urlencode($username)
. ($db != "" ? "&db=" . urlencode($db) : "")
. ($match[2] ? "&$match[2]" : "")
;
}

View file

@ -59,7 +59,7 @@ function typePassword(el, disable) {
function loginDriver(driver) {
var trs = driver.parentNode.parentNode.parentNode.rows;
for (var i=1; i < trs.length; i++) {
for (var i=1; i < trs.length - 1; i++) {
trs[i].className = (/sqlite/.test(driver.value) ? 'hidden' : '');
}
}

View file

@ -2,6 +2,7 @@ Adminer 3.4.0-dev:
Print current time next to executed SQL queries
Highlight code in SQL command by CodeMirror
Link to descending order
Allow specifying database in login form
Link to original table in EXPLAIN of SELECT * FROM table t
MySQL: inform about disabled event_scheduler
SQLite: support binary data