用delphi设计 软件用户登陆验证 网络 SQL数据库 验证登陆姓名和密码
1、创建管理员表
CREATE TABLE Ad
(密码 CHAR(8) PRIMARY KEY,
姓名 varchar(20)
);
2.管理员表初始化
insert into Ad (密码,姓名)
VALUES('admin', 'admin');
3.创建学生表
CREATE TABLE Student
(学生学号 CHAR (10) PRIMARY KEY,
学生姓名 VARCHAR (20) UNIQUE,
学生性别 CHAR (2),
学生年龄 SMALLINT,
班级号 CHAR (4),
FOREIGN KEY (班级号) REFERENCES Class(班级号)
);
4. 创建教师表
CREATE TABLE Teacher
(教工号 CHAR (8) PRIMARY KEY,
教师姓名 VARCHAR (20) UNIQUE,
教师性别 CHAR (2),
职称 VARCHAR (10),
);
登陆源码:
if radiobutton1.Checked then
begin
adoquery1.close;
adoquery1.SQL.clear;
adoquery1.SQL.add('select * from Student');
adoquery1.SQL.add('where 学生学号='''+edit2.text+''' and 学生姓名='''+edit1.text+'''');
adoquery1.Open;
if adoquery1.RecordCount>0 then
begin
form1.hide;
form2.show;
end
else
showmessage('用户名不存在或者权限错误,请查证后输入');
edit2.Clear
end
else if radiobutton2.Checked then
begin
adoquery1.Close;
adoquery1.SQL.clear;
adoquery1.SQL.add('select * from Teacher');
adoquery1.SQL.add('where 教工号='''+edit2.text+''' and 教师姓名='''+edit1.text+'''');
adoquery1.Open;
if adoquery1.RecordCount>0 then
begin
form1.hide;
form3.show;
end
else
showmessage('用户名不存在或者权限错误,请查证后输入');
edit2.Clear;
end
else if radiobutton3.Checked then
begin
adoquery1.close;
adoquery1.SQL.clear;
adoquery1.SQL.add('select * from Ad');
adoquery1.SQL.add('where 密码='''+edit2.text+''' and 姓名='''+edit1.text+'''');
adoquery1.Open;
if adoquery1.RecordCount>0 then
begin
form1.hide;
form4.show;
end
else
showmessage('用户名不存在或者权限错误,请查证后输入');
edit2.Clear;
end
1、本地必须保存SQL用户名和密码,既然知道用户名密码就没必要再多此一举去验证表里的用户名和密码了;
2、本地加密数据库密码,这也是不安全的,即使用加密,你也需要用到解密后才能去连接数据库吧,内存里一查明文就出来了。
这种方法在ASP/PHP中还是有用的,本地就不要用这种方法了。
安全的做法是:
1、客户端通过TCP发送用户名和密码发给服务端;
2、服务端接收到数据后连接数据库验证,验证通过后返回客户端结果
声明变量
var
vPassword :string;
按钮中代码
With vQuery Do
Begin
DatabaseName := '你的数据库名';
close;
SQL.Text := ' Select * From Operator Where Id='''+edit1.Text+'''';
Open;
If Eof Then //如果用户名错误
begin
ShowMessage('非法用户');
edit1.SetFocus;
Exit;
end;//end if
vPassword := FieldByName('Password').AsString;
If Trim(vPassword) <> Trim(edit2.Text) Then //如果用户口令错误
begin
ShowMessage('用户口令错误!');
Free;
edit2.SelectAll;
edit2.SetFocus;
Exit;
end; //end if
end;