1

Тема: Возможно ли предоставить пользователю указывать порт?

Чтобы подключиться к базе нужно указать сервер из списка и порт (для каждого пользователя он уникален).
Сейчас тип авторизации указан cookie - есть три поля: Сервер, Логин, Пароль. В поле сервер вручную вбивается сервер:порт.
Но хочу сделать списком выбор серверов, чтобы пользователи не использовали phpmyadmin для других серверов. Списком сделал, а как вынести в отдельное поле порт -чтобы пользователь его вручную указывал? Портов много и они постоянно обновляются, поэтому списком их не задашь.

2 (изменено: DmitryV, 2010-11-08 12:05:20)

Re: Возможно ли предоставить пользователю указывать порт?

В поле сервер вручную вбивается сервер:порт.

Так сделайте не 1 поле а 2, сервер отдельно порт отдельно.
если вы решили код переписать pma под себя.

Что много портов? mysql сервер на 1 хосте на 1 порту работает а не на нескольких, мало встечал чтоб кто то менял стандартный 3306 порт в mysql, и как они его самостоятельно на других хостах то могут использовать если у них нет прав на изменение файла конфига?
выбор серверов и так возможен в стандартном конфиге:

$i = 0;

/* Первый сервер*/
$i++;
$cfg['Servers'][$i]['verbose'] = 'Первый сервер';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '3306';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['auth_type'] = 'cookie';

/* Второй сервер*/
$i++;
$cfg['Servers'][$i]['verbose'] = 'Второй сервер';
$cfg['Servers'][$i]['host'] = '0.0.0.0';
$cfg['Servers'][$i]['port'] = '3306';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['auth_type'] = 'cookie';

/* Третий сервер*/
$i++;
$cfg['Servers'][$i]['verbose'] = 'Третий сервер';
$cfg['Servers'][$i]['host'] = '1.1.1.1';
$cfg['Servers'][$i]['port'] = '3306';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysql';
$cfg['Servers'][$i]['auth_type'] = 'cookie';

$cfg['blowfish_secret'] = '34534534534534534';
$cfg['ServerDefault'] = 0;

3

Re: Возможно ли предоставить пользователю указывать порт?

DmitryV сказал:

В поле сервер вручную вбивается сервер:порт.

Так сделайте не 1 поле а 2, сервер отдельно порт отдельно.
если вы решили код переписать pma под себя.

Что много портов? mysql сервер на 1 хосте на 1 порту работает а не на нескольких, мало встечал чтоб кто то менял стандартный 3306 порт в mysql, и как они его самостоятельно на других хостах то могут использовать если у них нет прав на изменение файла конфига?
выбор серверов и так возможен в стандартном конфиге:

Портов несколько сотен. Для каждого пользователя я запускаю отдельный  MySQL-сервер, на новом отдельном порту.
Поэтому в конфигурации нереально описать все сервера и порты. Начал переписывать pma - поле порта добавил, но никак не могу разобраться с передачей:

Все поля описываются в
/libraries/auth/cookie.auth.lib.php - так как использую куки.
Для сервера задано имя pma_servername, я добавил поле с именем pma_portname. Поля передаются нормально, но перехватить не могу.
По идее все переменные передаются в массив POST, но где то стоит переопределение этого массива. Изза этого момента я не могу склеить сервер и порт чтобы передать его pma.

4

Re: Возможно ли предоставить пользователю указывать порт?

есть массив и в нем значения  $cfg['Servers'][$i]['host'] и значения $cfg['Servers'][$i]['port'] передайте массив который ожидает от вас PMA

5

Re: Возможно ли предоставить пользователю указывать порт?

При указании хоста.

$cfg['AllowArbitraryServer'] = true;

Можно указывать порт через пробел после имени или IP хоста. Пример:

127.0.0.1 3306

Надеюсь это снимет необходимость править код скрипта.

6 (изменено: lego, 2010-11-08 19:41:12)

Re: Возможно ли предоставить пользователю указывать порт?

Hanut сказал:

При указании хоста.

$cfg['AllowArbitraryServer'] = true;

Можно указывать порт через пробел после имени или IP хоста. Пример:

127.0.0.1 3306

Надеюсь это снимет необходимость править код скрипта.

К сожалению это просто дает только возможность руками вводить сервер - как у меня сейчас и реализовано.
Только у меня вводится через двоеточие

127.0.0.1:3306
DmitryV сказал:

есть массив и в нем значения  $cfg['Servers'][$i]['host'] и значения $cfg['Servers'][$i]['port'] передайте массив который ожидает от вас PMA

А в каком месте можно это передать? Я просто не найду место где данные извлекаются из массива POST. После передаче я вижу их уже в массиве $GLOBALS:      $GLOBALS['pma_auth_server'].

PS: Отловил передачу порта - нужно в common.inc.php добавить соответствующую переменную массива пост в $allow_list - после чего увидел порт в массиве GLOBALS.
Только теперь не получается из GLOBALS вытащить и сложить строки. Не понимаю в каком месте правильно было бы это сделать.

7

Re: Возможно ли предоставить пользователю указывать порт?

К сожалению это просто дает только возможность руками вводить сервер - как у меня сейчас и реализовано.
Только у меня вводится через двоеточие

ну так сделайте не руками а из таблицы в форму селект выборку хостов ну где вы их адреса храните а порт через пробел... не понимаю в чем проблема и зачем такие сложности? если раздаем хост то просто каждому в админку pma не понимаю вашей задачи зачем вам раздача PMA для огромного числа хостов и ещё чтоб пользователи могли выбирать какой..

8

Re: Возможно ли предоставить пользователю указывать порт?

DmitryV сказал:

К сожалению это просто дает только возможность руками вводить сервер - как у меня сейчас и реализовано.Только у меня вводится через двоеточие

ну так сделайте не руками а из таблицы в форму селект выборку хостов ну где вы их адреса храните а порт через пробел... не понимаю в чем проблема и зачем такие сложности? если раздаем хост то просто каждому в админку pma не понимаю вашей задачи зачем вам раздача PMA для огромного числа хостов и ещё чтоб пользователи могли выбирать какой..

Сервер я щас оставил только один. Может я что то не понимаю? Щас нужно вводить имя сервера и порт в одно поле <input>. Каким образом можно в инпут засунуть <select>? Но даже если просто туда ввести готовое имя сервера, то пользователь указывая порт в тот же инпут - сможет поменять имя сервера, что нежелательно.

 
<input type="text" name="pma_servername" id="input_servername" value="<?php echo htmlspecialchars($default_server); ?>" size="24" class="textfield" />

9

Re: Возможно ли предоставить пользователю указывать порт?

lego сказал:

Только теперь не получается из GLOBALS вытащить и сложить строки. Не понимаю в каком месте правильно было бы это сделать.

cookie.auth.lib.php

// Перед строкой 579:
$cfg['Server']['user']     = $GLOBALS['PHP_AUTH_USER'];

// Добавьте строку:
$cfg['Server']['port'] = ''; // ваш порт.

Попробуйте так сделать.

10 (изменено: DmitryV, 2010-11-09 01:39:40)

Re: Возможно ли предоставить пользователю указывать порт?

<select name="pma_servername">
<option value="сервер:порт">01(сервер)</option>
<option value="сервер:порт">02(сервер)</option>
<option value="сервер:порт">03(сервер)</option>
</select>

и пользователь может только выбирать из списка сам список можно генерить выборкой из таблицы где храним адреса всех серверов и портов.
или сделать 2 селекта в первом сервера во втором номера портов