论坛: 编程破解 标题: Delphi6中怎么实现登陆密码验证?救救我! 复制本贴地址    
作者: catonline [catonline]    论坛用户   登录
我想用 ADOConnection和ADOQquery控件实现登陆密码验证,“pwd表”字段有id,name,pwd,部分代码如下:
       ......
           begin
           adoquery_denglu.close;    
           adoquery_denglu.sql.clear;
           adoquery_denglu.SQL.Add('select * from pwd');
           adoquery_denglu.open;
           adoquery_denglu.locate('name',name.text,[] );
           temp:= adoquery_denglu.FieldByName('pwd').AsString;
             if trim(temp) = pwd.Text then
               begin
                 close;
               end
             else
               begin
                 messagebox(handle,'用户名或密码错误,请重新登陆。','警告!',mb_ok);
                 name.setfocus;
               end
            end
         ......
name.text为用户名,pwd.text为相应用户密码,temp为string型局部变量。现在我发现只要是密码栏输入了pwd表中所包括的密码而不管与query_denglu.locate'name',name.text,[] )的用户名是否对应都可以执行下去,我猜想程序只是执行了(当然是输入了pwd表中的某个密码的情况下)
             temp:= adoquery_denglu.FieldByName('pwd').AsString;
             if trim(temp) = pwd.Text then
               begin
                 close;
               end
这部分,并不与用户名一起验证,但又不知道该怎样才能用ADOConnection和ADOQquery这两个控件实现密码验证,忘高手指点一二!谢谢了!


地主 发表时间: 11/04 16:36

回复: sainthero [sainthero]   论坛用户   登录
你的选择是无条件的
把选择的条件加上

B1层 发表时间: 11/11 14:02

回复: catonline [catonline]   论坛用户   登录
我也知道只是检查了“密码”而已,可怎么加上条件,条件加在什么地方?还得请详细指导,谢了!

B2层 发表时间: 11/14 07:48

回复: sainthero [sainthero]   论坛用户   登录
ADO不清楚
如果只是Query
sql.add('select * from xxx where user=N');
parambyname('N').asstring:=youruser;
.....
mypass:=query1.fieldvalues['password'].asstring;
//然后去比较password

B3层 发表时间: 11/14 18:16

回复: catonline [catonline]   论坛用户   登录
谢非常感谢!我也有一种方法可以实现了,可以交流一下:procedure Tdenglu.Button1Click(Sender: TObject);
  var temp1:string;
begin

  if (name.Text ='') then
     begin
         messagebox(handle,'用户名不能为空!请输入用户名。','抱歉!',mb_ok);
         name.SetFocus;
     end
   else
     if (pwd.text='') then
        begin
          messagebox(handle,'请输入密码。','抱歉!',mb_ok);
          pwd.setfocus;
        end
     else
           begin
           adoquery_denglu.close;
           adoquery_denglu.sql.clear;
           adoquery_denglu.SQL.Add('select * from pwd where id='''+name.text+'''');
           adoquery_denglu.open;
           i:=adoquery_denglu.fieldbyname('id').AsString;
           temp1:=adoquery_denglu.fieldbyname('pwd').AsString;
           if i='' then  //i 为全局变量
             begin
             messagebox(handle,'  没有此用户!  ','警告!',mb_ok);
             name.setfocus;
             pwd.Text:='';
             end
           else
             if temp1<>pwd.Text then
               begin
               messagebox(handle,'   密码错误! ','警告!',mb_ok);
               pwd.SetFocus;
               end
             else
               close;
          
            end

end;


end.



[此贴被 西南竹(catonline) 在 11月19日10时9分 编辑过]

B4层 发表时间: 11/19 10:7

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号