|
ange
|
|
Решить проблемы: пользователь заходить несколько раз.15.03.2010, 11:50. Показов 1002. Ответов 8
Метки нет (Все метки)
Всем добрый день. У меня вот такой вопрос. Есть программа, с которой работают по сети пользователи через авторизацию. Необходимо запретить повторный вход пользователя, логин которого уже занят. Так, например запустил и зашел в прогу Сидоров Вася, потом вышел в другой кабинет и там опять пытается запустить ее под своим логином. Это надо запретить. Я пыталась создать в базе таблицу с полем Загрузка. То есть если Сидоров зашел, то значение устанавливается в True, вышел в False. Но здесь возникают проблемы с зависанием машины, глюканием проги, вообщем, не всегда ведь выход из программы может быть корректным. В этом случем Сидоров навсегда остается заблокированным. Думала поставить таймер и каждые предположим пять секунд закидывать в табл. время, а потом при проверке проверять, как давно было обновлено это поле и если больше чем 5 сек назад, то считаю, что выход некорректен и запускаю Сидорова без проблем. Но и тут возникают траблы - если на машине 1 и машине 2 установлено не идентичное время, то когда машина1 работает нормально, а время у машины 2 бежит вперед, то получается разница более чем в пять сек. Вообщем, вот так. Может быть кто посоветует что-нибудь другое?
Заранее спасибо за помощь!!!!! |
|
| 15.03.2010, 11:50 | |
|
Ответы с готовыми решениями:
8
Компьютер несколько раз отключался после чего в очередной раз потух и больше не включался. Сделать так, чтобы можно было добавить несколько одинаковых блюд, не кликая несколько раз |
|
2 / 2 / 1
Регистрация: 19.07.2007
Сообщений: 737
|
|
| 15.03.2010, 12:13 | |
|
используй время на сервере SQL, а не на машинах пользователей
0
|
|
|
ange
|
|
| 15.03.2010, 12:39 | |
|
а как мне узнать время на сервере? разве что писать процедуру в SQL сервере?
|
|
|
2 / 2 / 1
Регистрация: 19.07.2007
Сообщений: 737
|
|
| 15.03.2010, 12:57 | |
|
в твоей таблице, где ты хранишь логины пользователей, заведи поле LoginTime со значением по-умолчанию GETDATE()
0
|
|
|
Gloom
|
|
| 15.03.2010, 13:13 | |
|
Лучше сделай так:
При старте проверяем - существует ли временная таблица ##Сидоров, ##Петров, etc - т.е. с именем пользователя. Если не существует, значит всё ОК - можем работать - и первым делом эту самую таблицу и создадим (лучше всё это в ХП засунуть). Ну а если существует, значит пользователь уже залогинился - не пустим его. И отслеживать ничего не надо - при разрыве соединения сервер сам удалит временные таблицы... |
|
|
ange
|
|
| 15.03.2010, 13:28 | |
|
хорошо, создание временной таблицы как я предполпгпю так
db.execute 'CREATE TABLE #tmpA(id INT, value FLOAT)' а как проверить, есть ли уже такая таблица или нет????? |
|
|
Gloom
|
|
| 15.03.2010, 13:52 | |
|
Проверить существование таблицы можно так, например:
select object_id('tempdb..##mytable')--если не существует, то вернёт NULL И имя таблицы должно начинаться обязательно с ##, иначе её будет видно только в текущем соединении... |
|
|
ange
|
|
| 15.03.2010, 14:04 | |
|
Пишу процедуру
CREATE PROCEDURE RunApp AS begin if (not object-id ('tempdb..##Сидоров') is NULL) 'есть такая таблица, как-то должна вернуть в прогу ложь '(завершение проги) else 'нет такой таблицы - создаю CREATE TABLE ##Сидоров(id INT) 'как то должна вернуть в прогу истину '(загружаем польз-ля) end А вот как передать это в VB???? Я очень извиняюсь, но до сих пор никогда не использовала процедуры |
|
|
Messir
|
|
| 16.03.2010, 01:43 | |
|
Мой вариант:
Прога состоит из двух частей - клиента и сервера. Сервер запущен всегда (на компе-сервере). Когда пользователь запускает клиента, то клиент коннектится к серверу. Сервер проверяет, не залогинен ли такой пользователь, и если да, то посылает клиенту ответ, что нельзя подключиться и разрывает соединение (клиент, соответственно, отрубается). Если же не залогинен, то сервер дает 'добро' и регистрирует где-то (в той же БД например), что пользователь залогинен. Клиент, получив разрешение, начинает дальнейшую работу. Если же клиент отрубается, то сервер улавливает разрыв соединения и вычеркивает пользователя из базы данных (клиент соединен с сервером на протяжении всего времени работы). Я бы делал так... Хотя не настаиваю на оптимальности этого варианта.
|
|
| 16.03.2010, 01:43 | |
|
Помогаю со студенческими работами здесь
9
Три проблемы. Помогите решить XML-XSL проблемы которые трудно решить Решить несколько задач Решить несколько уравнений Решить несколько задач Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|