Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Login form / 11 сообщений из 11, страница 1 из 1
08.12.2006, 11:25
    #34185571
s_akmal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Login form
Как сделать чтобы в начальной форме, которая состоит из двух объектов (1. Combo, 2. textbox), в combo выводились список пользователей из базы?
Это для того, чтобы не набирать имя пользователя в диалоговом окне логина, а проверить после того как пользователь выбрал имя, вводил пароль и нажал Ок
...
Рейтинг: 0 / 0
08.12.2006, 11:34
    #34185619
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Login form
установить св-во DataSource у контрола Combobox к примеру рекордсет, в который и запихнуть выборку пользователей из базы
I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
08.12.2006, 11:37
    #34185637
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Login form
Можно еше грузить значения для ComboBox программным путем
...
Рейтинг: 0 / 0
08.12.2006, 11:39
    #34185643
s_akmal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Login form
Вот код, который я использовал
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Option Explicit
Dim Cninput As ADODB.Connection
Dim adoPrimaryRS As ADODB.Recordset
Public LoginSucceeded As Boolean

Private Sub Form_Load()
Dim Sql As String, jo As String
Set adoPrimaryRS = New ADODB.Recordset
Set Cninput = New ADODB.Connection
If Cninput.State =  1  Then Cninput.Close
jo = App.Path + "\Data\Registration.mdb"
Cninput.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + jo + ";Persist Security Info=False"
Cninput.CursorLocation = adUseClient
Cninput.Open
Sql = "select username from users order by username"
If adoPrimaryRS.State =  1  Then adoPrimaryRS.Close
adoPrimaryRS.Open Sql, Cninput, adOpenStatic, adLockOptimistic
Set Combo1.DataSource = adoPrimaryRS
End Sub
...
Рейтинг: 0 / 0
08.12.2006, 15:26
    #34186601
bac
bac
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Login form
В вашей форме перечислен список пользователей.
1. Это противоречит принципам безопасности. Т.е. для закрытой системы пользователю не должен быть известен список всех пользователей. В идеале только свой.
2. Если у Вас используются пользователи базы данных, а не таблица с именами пользователей, то нужно предпринимать специальные действия, например присоединяться к БД каким-то пользователем которому разрешены права на просмотр списка пользователей.
...
Рейтинг: 0 / 0
11.12.2006, 07:23
    #34188965
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Login form
bacВ вашей форме перечислен список пользователей.
1. Это противоречит принципам безопасности. Т.е. для закрытой системы пользователю не должен быть известен список всех пользователей. В идеале только свой.
2. Если у Вас используются пользователи базы данных, а не таблица с именами пользователей, то нужно предпринимать специальные действия, например присоединяться к БД каким-то пользователем которому разрешены права на просмотр списка пользователей.
согласен
...
Рейтинг: 0 / 0
11.12.2006, 08:21
    #34189006
s_akmal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Login form
Сейчас, в приведенном выше коде, чего неправильного??
...
Рейтинг: 0 / 0
11.12.2006, 09:14
    #34189057
shady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Login form
В коде все правильно.
Код: plaintext
Persist Security Info=False
Я бы не стал делать, т.к. любой пользователь сможет пройти по
Код: plaintext
\Data\Registration.mdb
и посмотреть все что ему нужно.
А bac правильно тебе сказал. Есть смысл прислушаться.
...
Рейтинг: 0 / 0
11.12.2006, 12:49
    #34189879
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Login form
Хотя хакнуть mdb файл очень просто, если данные не зашифрованы,
я например делаю так обычно,
в таблице пользователей все пароли зашифрованы DES алгоритмом (есть например много компонентов готовых, классов для шифрации), и для каждого поля есть поле checksum (контрольная сумма)., и для важных таблиц тоже есть поле checksum.
(опционально) затем в отдельной таблице checksum'ы от всех таблиц, т.е. сколько записей в каждой таблице и что-то наподобие crc.
Затем при загрузке, прога контролирует целостность базы данных
И еще почитать методы защиты самой mdb, т.е. применение файла рабочей группы, защита таблцы, защита в самой mdb и т.д. есть много методов
...
Рейтинг: 0 / 0
11.12.2006, 13:23
    #34190048
s_akmal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Login form
Так как когда пытался создать форму для отображения данных с access, программа выдала ошибка, что нераспознанный тип базы данных, я экспортировал данные в таблицу dBASE (user.dbf).
Таблица user.dbf состоит из три поля: uid, username, pass.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub Form_Load()
On Error GoTo err_ms
Dim Jo As String, sql_str As String
Dim conn1 As adodb.Connection
Dim adoPrimaryRS As adodb.Recordset

Set conn1 = New adodb.Connection
Set adoPrimaryRS = New adodb.Recordset
Jo = App.Path + "\data\USER.DBF"
sql_str = "PROVIDER=MSDASQL;dsn=Файлы dBASE;uid=;pwd=;database=" + Jo + ";"
conn1.Open sql_str
adoPrimaryRS.Open "select USERNAME from USER", conn1, adOpenStatic, adLockOptimistic
Set Combo1.DataSource = adoPrimaryRS
Exit Sub
err_ms:
MsgBox Err.Description
End Sub
Сейчас моя задача состоит в том, чтобы в начальном поле пользователь выбрал из списка имя, но в список ничего не вышло. Если в коде все правильно то где еще может быть ошибка?? Сама программа не выводит ошибку
...
Рейтинг: 0 / 0
12.12.2006, 07:57
    #34192034
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Login form
Программным путем не пробовали заполнять?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Combo1.Clear
If adoPrimaryRS.EOF Then
       Combo1.ListIndex=- 1 
Else
       adoPrimaryRS.MoveFirst
       Do While Not adoPrimaryRS.EOF
               Combo1.AddItem adoPrimaryRS.Fields("UserName").Value
               adoPrimaryRS.MoveNext
       Loop
       Combo1.ListIndex= 0 
End If
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Login form / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]