Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Защита и обновление информации базы данных 
:(
    Опции темы
freshAngel
Дата 26.10.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 1.10.2008

Репутация: нет
Всего: нет



Система клиент  - сервер.
Информацию в БД (access) находящуюся на сетевом диске можно добавлять информацию один раз в месяц, для каждого пользователя.
Проверка была - ли запись в БД, ведется по следующему алгоритму

if(логин = введеный логин && месяц из БД = текущий месяц && год из БД = текущий год) - пользователь уже делал запись

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

Все работает, но если изменить дату на локальном компьютере (например, сделать, на год меньше), то соотвественно, исходя из предыдущего условия, открывается возможность добавления информации.

Как можно улучшить защиту!?

И второй вопрос...

Есть два стрингрида на вкладках tabset (по одному stringgrid на вкладку). Есть кнопка: Обновить информацию из БД. При ее нажатии происходит повторное, чтение информации из БД и занесение ее в стринггриды. Плохо, только одно, что обновляется только stringgrid на текущей вкладке, там, где в данный момент находится пользователь. Если пользователь находится на второй вкладке, то при попытке обновления первого stringgrid вываливается ошибка, что - то типа:
Вкладка номер 1, в режиме visible=false, невозможно обновить stringgrid1

Естественно, что при если:
Вкладка1 - visible = false, то Владка2 - visible=true и наоборот
PM MAIL   Вверх
Данкинг
Дата 26.10.2008, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(freshAngel @  26.10.2008,  14:02 Найти цитируемый пост)
Как можно улучшить защиту!?

А если вставлять дату не из самой программы, а ту, которая на сервере? Нечто вроде
Код

update table set pole=date()

(т.е. date() - это функция не твоей проги, а внутренняя функция VBA)
Сам не пробовал, поэтому не отвечаю. smile 

Цитата(freshAngel @  26.10.2008,  14:02 Найти цитируемый пост)
чтение информации из БД и занесение ее в стринггриды

Это уже другой вопрос. smile Но зачни из БД вносить инфу в StringGrid, если есть DbGrid ?



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
freshAngel
Дата 26.10.2008, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 1.10.2008

Репутация: нет
Всего: нет



Была такая мысль, насчет даты с сервера.
Только незнаю как вставить, а если
Код

update table set pole=date()

То обновиться дата, с локального компьютера...
А вот как получиться дату именно с компьютера сервера!?

Примечание
Хотя, если честно, непробовал. Тестировал программу использую файл БД с локального компьютера.
Попробую, что будет если файл БД, брать, как и положено, с сервера  smile 

А что на счет DBGrid, там оно мне не нужно...
Работаю непосредственно с SQL - запросами и вывожу в StringGrid результат из массива найденных строк...

Это сообщение отредактировал(а) freshAngel - 26.10.2008, 15:06
PM MAIL   Вверх
Данкинг
Дата 26.10.2008, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(freshAngel @  26.10.2008,  15:03 Найти цитируемый пост)
То обновиться дата, с локального компьютера...

Почему с локального-то? Ведь ты не посылаешь в запрос функцию date() (или как там она на Билдере) из своей проги. Ты берёшь date(), которая на сервере. Хотя я тоже не пробовал и гарантировать этого не могу. smile 




--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
freshAngel
  Дата 27.10.2008, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 1.10.2008

Репутация: нет
Всего: нет



Проверил.
Как я и думал, дата ставится с локального компьютера, а не с того, на сетевом диске которого лежит файл БД.
Просто, это не есть сервер базы данных, как например, MySQL, а простой файл БД.
Собственно и значения он берет с локального компьютера, и поддерживает лишь необходимый минимум функций для работы.
Есть еще идеи!?

PM MAIL   Вверх
Dmi3ev
Дата 27.10.2008, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



ну, по крайней мере можно запретить делать запись на более ранние даты, те, если пользователем сделана запись (последняя) в октябре 2008, то он не может сделать запись, если изменит дату на более раннюю (только если изменит на более позднюю у него будет возможность добавлять данные).
а еще можно запретить пользователю менять дату/время и все дела.


--------------------

PM MAIL   Вверх
freshAngel
  Дата 1.11.2008, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 1.10.2008

Репутация: нет
Всего: нет



Цитата(Dmi3ev @  27.10.2008,  22:19 Найти цитируемый пост)
а еще можно запретить пользователю менять дату/время и все дела

Средствами windows можно, конечно. Но это не очень хорошее решение проблемы.

Придумал, такую вещь, как актуальный месяц.
Тоесть администратору, вручную, нужно будет "закрывать" текущий месяц.
При вводе данных проверка:

if(месяц внесения записи =< закрытый месяц OR месяц внесения записи > (закрытый месяц + 2))

Как видно из условия, данная проверка, позволяет так - же запретить вносить данные на следующий месяц.
Например, закрытый месяц: 08.2008
Вносить данные можно в: 09.2008
А так - как 08.2008 + 2 = 10.2008 тоесть следующий месяц, данные вносить тоже нельзя.

Ну а если администратор забыл закрыть текущий месяц, это его проблемы...

Еще, неплохо - бы получать дату с сервера, только как это сделать!?

Есть еще какие - либо идеи!?

Это сообщение отредактировал(а) freshAngel - 1.11.2008, 19:29
PM MAIL   Вверх
HappyLife
Дата 1.11.2008, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: 4
Всего: 8



freshAngel, создай на удаленном компьютере простой сервер. А в своей программе клиент, и делай запрос к тому серверу по поводу даты. Можно еще не напрямую коннетится к базе Access, а через посредника.

Добавлено через 7 минут и 58 секунд
Может быть можно средствами апи узнать дату на чужом компьютере без сервера.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0534 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.