реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Соединиться из Builder 2006 с MySQL, но не светить логин/пароль
AlexandrY
сообщение Nov 18 2011, 15:21
Сообщение #16


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(toweroff @ Nov 18 2011, 16:47) *
что значит "какому-то администратору"?
он-то как раз должен знать, что там эти пользователи делали. Причем простым селектом


Странный сценарий.
Администратор это тот кто создает, удаляет и архивирует таблицы и базы данных, смотрит логи. Сами данные он смотреть не может.
Это по логике.

Но о каком этапе жизни продукта говорим. О разработке или эксплуатации?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 18 2011, 15:26
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(AHTOXA @ Nov 18 2011, 19:17) *
Не выйдет. Права даются на отдельную таблицу.
Но. Можно создать для каждого пользователя отдельный VIEW типа "SELECT * FROM TABLE_FOR_ALL_USERS WHERE USER_ID = x", и дать ему полные права на этот вид. А на таблицу - не давать.
Тогда выйдет как надо - есть общая таблица для сбора статистики, а для каждого пользователя для неё отдельный вид.

yeah.gif
как это я про VIEW забыл... давно с базами не работал... лет эдак 10 sm.gif
буду пробовать
самое главное, чтобы хостер разрешил добавление юзверей в базу, надо проверить

спасибо, буду тестить
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Nov 18 2011, 15:26
Сообщение #18


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(AHTOXA @ Nov 18 2011, 17:17) *
Не выйдет. Права даются на отдельную таблицу.
Но. Можно создать для каждого пользователя отдельный VIEW типа "SELECT * FROM TABLE_FOR_ALL_USERS WHERE USER_ID = x", и дать ему полные права на этот вид. А на таблицу - не давать.
Тогда выйдет как надо - есть общая таблица для сбора статистики, а для каждого пользователя для неё отдельный вид.


ИМХО. Легче триггера поставить которые бы реагировали на каждую запись в каждую собственную пользовательскую таблицу и писали дополнительно в общую для "анализов". Потом легче было бы разрулить проблемы с целостность данных, надежностью и защитой.

Потому как связавшись с параметрическими запросами придется их юзать при каждой мелкой работе с данными.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 18 2011, 16:04
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(AlexandrY @ Nov 18 2011, 19:21) *
Странный сценарий.
Администратор это тот кто создает, удаляет и архивирует таблицы и базы данных, смотрит логи. Сами данные он смотреть не может.
Это по логике.

Но о каком этапе жизни продукта говорим. О разработке или эксплуатации?

наверное, не так выразился
доступ нужен не тому, кто обслуживает базу как таковую, а пользователю, который может смотреть все записи

посмотрел
нет у меня прав на создание пользователей sad.gif
на компе можно, на серваке phpmyadmin не дает создать юзверя. Буду хостера бодать
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 19 2011, 15:18
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(toweroff @ Nov 18 2011, 18:02) *
вооот!!
именно это и есть
собссно вопрос-то в том, каким путем правильнее идти, чтобы это реализовать?
Путем создания сервлета на сервере (если хостер предоставляет такой сервис). Если нет, то придется всю бизнес логику реализовывать на стороне клиента, что в принципе является большой дырой в безопасности и стабильности системы smile3046.gif
Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 19 2011, 17:47
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(XVR @ Nov 19 2011, 19:18) *
Путем создания сервлета на сервере (если хостер предоставляет такой сервис). Если нет, то придется всю бизнес логику реализовывать на стороне клиента, что в принципе является большой дырой в безопасности и стабильности системы smile3046.gif

а что такое сервлет? rolleyes.gif

пока реализовано добавление юзера, создание для него представления VIEW с фильтрацией по его ID с правами только SELECT
вроде нормально работает на локальной машине

в приложение вкручено API MySQL - libmysql, не стал я с ODBC, dbExpress и подобными вещами возиться

попробую потолкать хостера, чтобы разрешил мне создавать пользователей с назначением им таких прав
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 21 2011, 09:05
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(toweroff @ Nov 19 2011, 21:47) *
а что такое сервлет? rolleyes.gif
Это грубо говоря программа, работающая на хосте. Именно она общается с базой данных, а пользователи общаются с ней, база данных напрямую им вообще не доступна.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 21 2011, 09:56
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(XVR @ Nov 21 2011, 13:05) *
Это грубо говоря программа, работающая на хосте. Именно она общается с базой данных, а пользователи общаются с ней, база данных напрямую им вообще не доступна.

в целом это понятно. Гугл есть, на крайняк можно тут спросить

вопрос в другом - каким способом из приложения мне достучаться до этого сервлета?
пока единственное, что нашел - пользовать TIdHTTP. Оттуда формировать запрос, получать ответ.
Какими еще компонентами можно воспользоваться?
Или я вообще не в ту сторону повернулся и заморочки с MySQL - более простое и безопасное решение?
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 21 2011, 10:28
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
вопрос в другом - каким способом из приложения мне достучаться до этого сервлета?
Со стороны клиента этот сервлет будет представлен некоторым URL. Запросы будут представлены параметрами (в URL) или частью пути (опять же в URL).
Цитата
пока единственное, что нашел - пользовать TIdHTTP. Оттуда формировать запрос, получать ответ.
Стандартный WEB браузер (DHTML/JS/Ajax - по желанию/Flash/Flex). Можно еще Java подключить (тогда вообще открывается масса возможностей для связи с сервлетом - JSON, CORBA, SOAP и т.д. и т.п.) Делать морду на Builder'е для Internet приложения - путь явно тупиковый.
Цитата
Или я вообще не в ту сторону повернулся и заморочки с MySQL - более простое и безопасное решение?
Если вы выставите MySQL базу в Internet, то готовьтесь к тому, что ее будут ломать всем Internet'ом (чисто из спортивного интереса)

PS. Задайте свой вопрос тут
Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 21 2011, 12:36
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(XVR @ Nov 21 2011, 14:28) *
Делать морду на Builder'е для Internet приложения - путь явно тупиковый.

почему? мне всего-то нужно залогиниться, получить кусок инфы и разлогиниться
Цитата(XVR @ Nov 21 2011, 14:28) *
Если вы выставите MySQL базу в Internet, то готовьтесь к тому, что ее будут ломать всем Internet'ом (чисто из спортивного интереса)

а вот тут правда Ваша, не подумал sad.gif

если через Indy - лезу на спец.страницу, логинюсь, PHP выплюнет мне какие-то данные, индеец ее назад получит, я в программе обработаю
получается, ни куча пользователей MySQL не нужна, ни сервлеты
или я опять что-то упустил? опыта-то в таких делах никакого sm.gif
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 21 2011, 15:06
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
почему? мне всего-то нужно залогиниться, получить кусок инфы и разлогиниться
А инфа пусть пропадает? Или все же с ней нужно что то сделать sm.gif На чем писать (и в каком виде) сильно зависит от того, что нужно сделать. Вариант с WEB браузером хорош тем, что пользователю не надо будет ставить никаких специальных программ, и обновлять их (если что) тоже не надо.
Цитата
если через Indy - лезу на спец.страницу, логинюсь, PHP выплюнет мне какие-то данные, индеец ее назад получит, я в программе обработаю
Можно
Цитата
получается, ни куча пользователей MySQL не нужна, ни сервлеты
В этом случае ваша PHP страница и будет сервлетом (правда очень примитивным)
Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 21 2011, 15:16
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(XVR @ Nov 21 2011, 19:06) *
А инфа пусть пропадает? Или все же с ней нужно что то сделать sm.gif На чем писать (и в каком виде) сильно зависит от того, что нужно сделать. Вариант с WEB браузером хорош тем, что пользователю не надо будет ставить никаких специальных программ, и обновлять их (если что) тоже не надо.

Браузер не подходит. Будет такая схема - девайс подключается по USB, прога через libusb его видит, выпрашивает у него логин/пароль и с ними лезет на сервер. Цепляет оттуда что нужно, заливает это в девайс и отлепляется от сервера
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 22 2011, 06:20
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(toweroff @ Nov 21 2011, 19:16) *
Будет такая схема - ...
Угу, а какой нибудь GUI вообще нужен? Или никаких действий со стороны пользователя не ожидается (ну кроме самого факта запуска программы)?

Если GUI не нужен, то проще будет сделать консольное приложение, а для доступа к WEB странице загрузки/сервлета использовать wininet.dll Получится очень маленькая и компактная утилитка rolleyes.gif

Go to the top of the page
 
+Quote Post
toweroff
сообщение Nov 22 2011, 21:36
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Посмотрите и покритикуйте, пожалуйста, вот такой механизм на PHP
набросал только скелет
все ляпы потом отрехтуются, важен именно порядок действий и их правильность
Код
<?php
session_start();

$current_time = time();

if (isset($_SESSION['counter']))
{
    if ($_SESSION['counter']>1)
    {
        if ((time() - $_SESSION['time'])<60)
        {
            echo "Too many attemps. Please wait 60secs";
            exit;
        }
        else
        {
            $_SESSION['time'] = time();
            $_SESSION['counter'] = 0;
        }
    }
}

if (!isset($_SESSION['user_id']))
if (isset($_POST['auth_name'])) {

  // здесь коннектимся к базе, запрашиваем пользователя с нужными логином/паролем
  // ...

  $result = mysql_query($query, $link);

  if ($row = mysql_fetch_array($result, MYSQL_ASSOC))
  {

    session_start();
    $_SESSION['user_id'] = $row['id'];
    $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
    $_SESSION['test_string'] = $row['test_string'];
    $_SESSION['name'] = $row["name"];
    echo "Logged in as ".$row['name']."; ".$row['test_string'];
              show_data();
  }
  else
  {
    if (isset($_SESSION['counter']))
    {
        $_SESSION['counter']++;
        echo "Try: ".$_SESSION['counter'];
    }
    else
    {
        $_SESSION['counter'] = 0;
        $_SESSION['time'] = time();
        echo "Flag: invalid\n";
    }
  }

  mysql_free_result($result);
  mysql_close($link);
  exit;
}

if (isset($_GET['action']) AND $_GET["action"]=="logout") {
  session_start();
  session_destroy();
  echo "Flag: closed";
  exit;
}


if (isset($_REQUEST[session_name()])) session_start();
if (isset($_SESSION['user_id']) AND $_SESSION['ip'] == $_SERVER['REMOTE_ADDR'])
{
    echo "Flag: OK\n";
    echo "Already logged as ".$_SESSION['name']."; ".$_SESSION['test_string'];
              show_data();
    exit;
}
else
{
  session_start();
  echo "Flag: autentification";
?>
<form method="POST">
<input type="text" name="auth_name"><br>
<input type="password" name="auth_pass"><br>
<input type="submit"><br>
</form>
<?php
}
exit;
?>


есть подозрение, что по action=logout нужно тоже проверять, были ли залогинены (то есть в сессии присутствует "id")

Цитата(XVR @ Nov 22 2011, 10:20) *
Угу, а какой нибудь GUI вообще нужен? Или никаких действий со стороны пользователя не ожидается (ну кроме самого факта запуска программы)?

гуй будет, форма с кнопочками и логом
От юзверя действия, конечно, будут нужны - да/нет там всякие. Но в передаваемые данные он не вмешивается
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 23 2011, 08:31
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



С PHP не работал, но на первый взгляд все Ок. Есть только сомнение по поводу привязки к IP - если пользователь работает через proxy или из локальной сети без видимого снаружи IP, то все такие пользователи будут идти через один и тот же IP

Еще подозрительно выглядит session_start() в самом начале скрипта, но тут я не уверен, т.к. не в курсе, как в PHP устроена работа с сессиями
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th June 2025 - 19:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01534 секунд с 7
ELECTRONIX ©2004-2016