后台数据库用sql,如何做用户的身份认证啊?就是在sql中有一个用户表,由用户的名字和密码,前台怎么实现呢?

解决方案 »

  1.   

    這是我的那個登錄窗體的確定按鈕的代碼
    procedure Tlogin.OKBtnClick(Sender: TObject);
    var username,userpwd:string;
        userright:integer;
    begin
      adoquery1.close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add('select username,userpwd,userright from tbluser where username='''+edit1.Text+'''');
      adoquery1.Open;
      username:=edit1.Text;  userpwd:=edit2.Text;
      if (username<>'') and (userpwd<>'') then
        begin
        if (username=adoquery1.FieldByName('username').AsString) and (userpwd=adoquery1.FieldByName('userpwd').AsString) then
          begin
             userright:=adoquery1.fieldbyname('userright').AsInteger;
             case userright of
               0: begin
                    mainform.n2.Visible:=false;
                    mainform.n3.Visible:=true;
                    mainform.n6.Visible:=false;
                    mainform.n7.Visible:=true;
                    mainform.n8.Visible:=true;
                  end;
               1: begin
                    {mainform.n2.Visible:=true;
                    mainform.n3.Visible:=false;
                    mainform.n6.Visible:=true;
                    mainform.n7.Visible:=false;
                    mainform.n8.Visible:=false;}
                    mainform.n2.Visible:=false;
                    mainform.n3.Visible:=true;
                    mainform.n6.Visible:=false;
                    mainform.n7.Visible:=true;
                    mainform.n8.Visible:=true;
                  end;
               2: begin
                    mainform.n2.Visible:=false;
                    mainform.n3.Visible:=true;
                    mainform.n6.Visible:=false;
                    mainform.n7.Visible:=true;
                    mainform.n8.Visible:=true;
                  end;
             end;{case}
          mainform.userid:=edit1.Text;
          end else begin showmessage('用戶名或密碼不正確'); edit1.SetFocus; end
        end else begin showmessage('用戶名或密碼不能為空'); edit1.SetFocus; end;
    end;
      

  2.   

    简单的登陆窗口的实现,代码如下uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons, DBCtrls, ExtCtrls;type
      TLoginForm = class(TForm)
        btok: TBitBtn;
        btno: TBitBtn;
        password: TEdit;
        Label2: TLabel;
        Label1: TLabel;
        user: TDBLookupComboBox;
        Panel1: TPanel;
        Panel2: TPanel;
        procedure FormShow(Sender: TObject);
        procedure btokClick(Sender: TObject);
        procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
        procedure btnoClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        check: boolean; //检查密码输入是否正确
        Ftimes: integer; //密码输入次数计数
        { Private declarations }
      public
        procedure iniapp(qx: int64); //项目初始化
        { Public declarations }
      end;var
      LoginForm: TLoginForm;implementationuses Udm, Umain;{$R *.dfm}procedure TLoginForm.FormShow(Sender: TObject);
    begin
      Ftimes := 0; //记录密码输入次数为0
      check := false;
      User.SetFocus; //用户名选择获得焦点
      PassWord.text := ''; //清空密码输入
      user.DropDown; //为了方便用户选择,打开下拉列表
    end;procedure TLoginForm.btokClick(Sender: TObject);
    var mm: string; qx: int64;
    begin
      Ftimes := Ftimes + 1; //每单击一次'确定'按钮,密码输入次数加1
      mm := trim(adodm.Tuser.Fieldbyname('密码').AsString); //取得该用户在数据库中的密码
      qx := adodm.Tuser.FieldValues['用户权限']; //取得该用户在数据库中的操作权限
      if (mm = trim(PassWord.text)) and (qx > 1000000000) then
      begin    MainForm.auser.name := adodm.Tuser.FieldValues['操作员'];
        MainForm.auser.qx := StrToint64(adodm.Tuser.FieldValues['用户权限']);
        MainForm.auser.id := StrToInt64(adodm.Tuser.fieldvalues['用户编号']);
          //记录用户的登陆时间和用户名
        adodm.toper.Open;
        adodm.toper.append;
        adodm.toper.FieldByName('登录时间').AsDateTime := now;
        adodm.toper.FieldByName('用户编号').AsVariant := MainForm.auser.id;
        adodm.toper.Post;
        adodm.toper.Last;
        MainForm.operid := adodm.toper.FieldByName('操作员编号').AsVariant;
        iniapp(qx); //初始化主窗体属性
      end
      else
        if Ftimes < 3 then
          if mm <> trim(PassWord.Text) then
          begin
            showmessage('密码不对,请重新录入!');
            PassWord.SetFocus;
            exit;
          end else
          begin
            showmessage('你已经输入三次错误密码,请与管理员联系!');
            User.SetFocus;
            exit;
          end
        else
        begin
          showmessage('对不起,你没有通过口令认证!');
          application.Terminate;
        end;
    end;
      

  3.   

    很简单,如果要的话,我给你一个实例!给我发邮件:[email protected]