【发布时间】:2015-02-10 16:23:56
【问题描述】:
使用 Delphi XE2。
我有一个数据库,其中有一个名为 users 的表。它有一个 user_id 字段、一个用户名字段、一个密码字段和一个 Active 字段。 (user_id 是标识每个用户的唯一编号...1、2、3 等)。
我正在编写一个需要用户名和密码才能登录的数据库软件包。 (我已经创建了一个登录表单)。
如何让它匹配/检查数据库中的用户名和密码,然后允许用户继续进入软件?另外,如果用户已登录,我希望活动字段存储在数据库中“Y”,如果用户未登录,我希望将“N”存储在数据库中。这可行吗?
我通过 TADQuery 和 TDataSource 连接到 users 表。
我认为可以帮助我入门的功能示例(在单击登录表单上的登录按钮时调用它)。
function TfrmLogin.CheckUser: Boolean;
begin
while not dmData.qryUser.Eof do
begin
if(editName.Text <> qryUser.FieldByName('uname').AsString) or (editPassword.Text <> qryUser.FieldByName('pword').AsString)
then ShowMessage('Username and/or Password not recognised');
Exit;
End;
【问题讨论】:
-
为什么要将登录状态存储在数据库中?
-
老实说,只是看看能不能做到。如果您建议不要存储它,那么我会接受您的意见。我已经很久没有这样做了。
-
您在任务的哪一部分遇到了问题?到目前为止,您尝试过什么,您在哪里卡住了?
-
允许用户使用存储在数据库中的用户凭据登录软件......这就是我的目标。我尝试了以下方法,如果 name.text / password.text = fieldbyname('name').asstring / fieldbyname('password').asstring 然后开始 LoginForm.Hide; mainform.create(self);尝试 Mainform.showmodal finally mainform.free else ShowMessage('uname or pword not recognize'), Close;对不起,垃圾示例,真的不知道该怎么说。
-
请,请,请不要在您的数据库中以纯文本形式存储密码。至少,存储一个散列版本并比较散列。对可以保护您和您的用户的一些基本事项进行一些研究。
标签: database delphi delphi-xe2 sybase-asa