登录验证

bladellz 2004-08-02 11:21:57
才从VB转到Delphi
看了不少关于登录密码验证的方法,用query控件,Filter...

试了一下 都没成功

各位大虾能总结下吗>?(D7+ADO+SQL SERVER2k)
...全文
205 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinjazz 2004-08-02
  • 打赏
  • 举报
回复
《〈楼上的登陆验证都有问题,容易受到sql的攻击,假如有人把密码输入为xxx'' or ''1=1,那你完了,随便登陆啊

agree!这只是个示范,楼主上面的也正确
bladellz 2004-08-02
  • 打赏
  • 举报
回复
谢了哈jinjazz

ADOConnection1.Connected:=True;
table.filter:='ID='''+edit1.text+'''';
table.filter:=true;
table.open;

if table.RecordCount=1 then
....

这么也行吗?
myboor 2004-08-02
  • 打赏
  • 举报
回复
楼上的登陆验证都有问题,容易受到sql的攻击,假如有人把密码输入为xxx'' or ''1=1,那你完了,随便登陆啊
taoff 2004-08-02
  • 打赏
  • 举报
回复
在一个引用串中,两个连续的单引号
('')表示一个字符,也就是单引号本身(')。看以下的例子:
'''' { ' }
jinjazz 2004-08-02
  • 打赏
  • 举报
回复
你用showmessage('''');看看就明白了,其中一个是转义用的,两个是delphi字符串开始结束用的,只有一个是真的'
bladellz 2004-08-02
  • 打赏
  • 举报
回复
对了,我对filter得用法还不是狠清楚
怎么是四个'''' ?
jinjazz 2004-08-02
  • 打赏
  • 举报
回复
改:
if adoquery1.fieldbyname('c').asinteger=0 then --->
if adoquery1.fieldbyname('cc').asinteger=0 then
jinjazz 2004-08-02
  • 打赏
  • 举报
回复
...

adoquery1.sql.clear;
adoquery1.sql.add('select count(*) as cc from xxx where id='''+edit1.text+''' and pwd='''+edit2.text+'''');
adoquery1.close;
adoquery1.open;
if adoquery1.fieldbyname('c').asinteger=0 then
不通过
else
通过
godnoloveihavelove 2004-08-02
  • 打赏
  • 举报
回复
怎么总结,和VB方式不是一样的,看结果集是空还是数目为0,也就这样判断了,不成功是不存在的

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧