![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Авторизация
ivkinai76 © (2013-02-20 22:03:00)База данных сделана в MS ACCESS.
Оболочка под нее в Дельфи.
При запуске происходит запрос на авторизацию. Выбирается режим входа в систему и в зависимости от этого-либо пользовательский режим или администратора. В пользовательском только просмотр.
Код программы:
procedure TForm1.Button1Click(Sender: TObject);
var
log,pass:string[20];
begin
log:=ComboBox1.Text;
pass:=Edit2.Text;
with Form1.ADOQuery1 do begin
close;
SQL.Clear;
SQL.Add('Select *');
SQL.Add('FROM users');
SQL.Add('WHERE ((log='''+log+''') AND (pass='''+pass+'''))');
Open;
end;
if ADOQuery1.RecordCount<>0 then
begin
if ADOQuery1.FieldByName('log').AsString = 'admin' then
Form2.Show
else if ADOQuery1.FieldByName('log').AsString = 'user' then
Form3.Show;
end
else begin
ShowMessage('Неправильно введено имя пользователя или пароль');
ComboBox1.Text:='';
Edit2.Text:='';
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Application.Terminate;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
ComboBox1.Items.Clear;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select log from users');
ADOQuery1.Open;
ADOQuery1.First;
for i := 0 to ADOQuery1.RecordCount - 1 do
begin
ComboBox1.Items.Add(ADOQuery1.FieldByName('log').AsString);
ADOQuery1.Next;
end;
ADOQuery1.Close;
end;
end.
Может немного коряво. Но прошу заранее извинить-только учусь программировать.
Вопрос такой. Даже два.
1. Как сделать, чтобы при вводе правильного логина и пароля-окно авторизации закрывалось и оставалось только форма с базой данных.
2. Как сделать, чтобы вместо вводимого пароля высвечивались звездочки.
Slym (2013-02-22 08:09:00) [1]http://www.programmersforum.ru/showthread.php?t=228422
я бы в users завел бульеновое поле Admin
и будет
if ADOQuery1.FieldByName('Admin').AsBo olean then
и кстати универсальный пароль будет ")) or((""="
подумай сам почему
это называется SQLInject и фиксится использованием параметров
O'ShinW (2013-02-21 09:57:00) [2]Чего зачем?
> а затемзакрыть первую = завершить работу приложения
> ты мне показываешь как надо?
автору
Медвежонок Пятачок (2013-02-21 09:56:00) [3]>зачем?
Чего зачем?
Или ты мне показываешь как надо?
O'ShinW (2013-02-21 09:24:00) [4]>> Медвежонок Пятачок © (20.02.13 22:15) [2]
зачем?
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {frmLogin},
Unit2 in 'Unit2.pas' {frmWork};
{$R *.res}
var
frmLogin: TfrmLogin;
begin
frmLogin := TfrmLogin.Create(nil);
if frmLogin.ShowModal <> 1 then
Exit;
Application.Initialize;
//Application.CreateForm(TfrmLogin, frmLogin);
Application.CreateForm(TfrmWork, frmWork);
Application.Run
Podgoretsky (2013-02-21 08:40:00) [5]Аутентификацию сначала бы пройти.
Медвежонок Пятачок (2013-02-20 22:15:00) [6]1. Как сделать, чтобы при вводе правильного логина и пароля-окно авторизации закрывалось и оставалось только форма с базой данных.
Типа как отпилить сук на котором сидишь?
С учетом того, что первая форма - это application.mainform, то открыть вторую или третью а затем закрыть первую = завершить работу приложения.
Ega23 (2013-02-20 22:11:00) [7]
> 2. Как сделать, чтобы вместо вводимого пароля высвечивались звездочки.
TEdit.PasswordChar
> 1. Как сделать, чтобы при вводе правильного логина и пароля-
> окно авторизации закрывалось и оставалось только форма с
> базой данных.
Сделай модальную форму с проверкой, и дальше либо создавай главную форму, либо выходи.