Графический вход
Был создан графический вход для сотрудников школы, с таблицами, к которым у них есть доступ. Для начала нужно ввести логин и пароль (рисунок 14-15), после успешной авторизации нужно ввести графический ключ (рисунок 16), после чего будут доступны определенные функции (рисунок 17).
Рисунок 14 – Ввод логина пользователя
Рисунок 15 – Ввод пароля
Рисунок 16 – Открыта форма после успешной авторизации, функции не доступны
Рисунок 17 – При успешном вводе графического пароля функции доступны
При неправильном вводе графического ключа появляется окно с ошибкой (рисунок 18).
Рисунок 18 – Ошибка входа
Листинг авторизации:
Option Compare Database Option Explicit
Private gp As String Private pw As String Private C As Integer Private cc As Integer Private i As Integer
Private Sub Form_Open(Cancel As Integer) gp = "" C = 1 cc = 0 DoCmd.SetProperty "Кнопка10", acPropertyEnabled, "0" DoCmd.SetProperty "Кнопка11", acPropertyEnabled, "0" DoCmd.SetProperty "Кнопка12", acPropertyEnabled, "0"
On Error Resume Next DoCmd.Close acForm, "Users" TempVars.Add "name", InputBox("Введите имя пользователя", "Авторизация") TempVars.Add "password", InputBox("Введите пароль", "Авторизация") DoCmd.OpenForm "Users", acNormal, "", "[Имя пользователя]=[TempVars]![name] And [Пароль]=[TempVars]![password]", acReadOnly, acHidden If (Forms![Users]![Имя пользователя] <> TempVars!Name And Forms![Users]!Пароль <> TempVars!Password) Then MsgBox "Имя пользователя или пароль введены не верно", vbOKOnly, "Ошибка" DoCmd.Close acForm, "Users" DoCmd.Close acForm, "5)Авторизация" End If TempVars.RemoveAll
End Sub
Private Sub Click(b As String) pw = "4268" cc = cc + 1 gp = gp + b If (cc = 4) Then If (gp = pw) Then For i = 1 To 9 DoCmd.SetProperty "Кнопка" & CStr(i), acPropertyEnabled, "0" Next If (Forms![Users]!Удаление) Then DoCmd.SetProperty "Кнопка10", acPropertyEnabled, "1" DoCmd.SetProperty "Кнопка11", acPropertyEnabled, "1" DoCmd.SetProperty "Кнопка12", acPropertyEnabled, "1" ElseIf (Forms![Users]![Добавление и изменение]) Then DoCmd.SetProperty "Кнопка11", acPropertyEnabled, "1" DoCmd.SetProperty "Кнопка12", acPropertyEnabled, "1" ElseIf (Forms![Users]!Просмотр) Then DoCmd.SetProperty "Кнопка12", acPropertyEnabled, "1" Else DoCmd.Close acForm, "Выбрать действие" MsgBox "Ошибка права доступа", vbExclamation, "Ошибка" End If DoCmd.Close acForm, "Users" Else C = C + 1 gp = "" cc = 0 If (C > 3) Then MsgBox "Ключ неверный", vbOKOnly, "Ошибка" DoCmd.Close acForm, "5)Авторизация" Else MsgBox "Ключ неверный. Попытка " & CStr(C) & " из 3.", vbOKOnly, "Ошибка" End If End If End If End Sub
Private Sub Кнопка1_Click() Click ("1") End Sub Private Sub Кнопка2_Click() Click ("2") End Sub Private Sub Кнопка3_Click() Click ("3") End Sub Private Sub Кнопка4_Click() Click ("4") End Sub Private Sub Кнопка5_Click() Click ("5") End Sub Private Sub Кнопка6_Click() Click ("6") End Sub Private Sub Кнопка7_Click() Click ("7") End Sub Private Sub Кнопка8_Click() Click ("8") End Sub Private Sub Кнопка9_Click() Click ("9") End Sub
Private Sub Кнопка10_Click() DoCmd.OpenForm "Полноправное редактирование", acNormal, "", "", , acNormal End Sub Private Sub Кнопка11_Click() DoCmd.OpenForm "Просмотр и редактирование таблиц", acNormal, "", "", , acNormal End Sub Private Sub Кнопка12_Click() DoCmd.OpenForm "Просмотр таблиц", acNormal, "", "", , acNormal End Sub |
Листинг графического ключа
Option Compare Database Option Explicit
Private gp As String Private pw As String Private C As Integer Private cc As Integer
Private Sub Form_Open(Cancel As Integer) gp = "" C = 1 cc = 0 End Sub
Private Sub Click(b As String) pw = "4268" cc = cc + 1 gp = gp + b If (cc = 4) Then If (gp = pw) Then DoCmd.Close acForm, "5)Графический ключ" Else C = C + 1 gp = "" cc = 0 If (C > 3) Then MsgBox "Ключ неверный", vbOKOnly, "Ошибка" DoCmd.Close acForm, "5)Графический ключ" Else MsgBox "Ключ неверный. Попытка " & CStr(C) & " из 3.", vbOKOnly, "Ошибка" End If End If End If End Sub
Private Sub Кнопка0_Click() Click ("1") End Sub Private Sub Кнопка1_Click() Click ("2") End Sub Private Sub Кнопка2_Click() Click ("3") End Sub Private Sub Кнопка3_Click() Click ("4") End Sub Private Sub Кнопка4_Click() Click ("5") End Sub Private Sub Кнопка5_Click() Click ("6") End Sub Private Sub Кнопка6_Click() Click ("7") End Sub Private Sub Кнопка7_Click() Click ("8") End Sub Private Sub Кнопка8_Click() Click ("9") End Sub |