登录验证

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

试了一下 都没成功

各位大虾能总结下吗>?(D7+ADO+SQL SERVER2k)
...全文
129 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
....

这么也行吗?
回复
taoff 2004-08-02
在一个引用串中,两个连续的单引号
('')表示一个字符,也就是单引号本身(')。看以下的例子:
'''' { ' }
回复
杀手悟道 2004-08-02
楼上的登陆验证都有问题,容易受到sql的攻击,假如有人把密码输入为xxx'' or ''1=1,那你完了,随便登陆啊
回复
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
通过
回复
怎么总结,和VB方式不是一样的,看结果集是空还是数目为0,也就这样判断了,不成功是不存在的
回复
相关推荐
发帖
数据库相关
创建于2007-08-02

2454

社区成员

Delphi 数据库相关
申请成为版主
帖子事件
创建了帖子
2004-08-02 11:21
社区公告
暂无公告