读书人

密码匹配有关问题

发布时间: 2012-12-31 11:57:52 作者: rapoo

密码匹配问题
我设置用户登录验证,用户名不对的话给提醒 ,用户名对了从数据库中提取相应的密码放在一个变量中,然后和后面输入的密码比较,不相等则判断是第几次点击<登录确定>按钮,若是超过了三次,则弹出强制退出窗口w_error,程序运行结束;若没有超过三次,则给出输入错误提示,可以接着输入。要是数据库中密码和输入的密码一样则弹出主程序窗口w_operation。

下面是我的这个<登录确定>按钮的点击事件代码:

string adm,pwd,pwdr
adm=sle_1.text
pwd=trim(sle_2.text)
if adm="" then
messagebox("提示","未输入管理员名")
sle_1.setfocus()
return
end if

select 密码
into :pwdr
from login
where 用户名=:adm;
if sqlca.sqlcode<>0 then
i++
if i>3 then
open(w_error)
else
messagebox("提示","此管理员名不存在。请输入正确的管理员名")
return
end if
end if

sle_3.text=pwdr

if pwd="" then
messagebox("提示","请输入密码")
sle_2.setfocus()
return
end if

sle_4.text=pwd

// /*
if pwd<>pwdr then // 这个条件通过,因为有密码输入错误的提示、说明密码验证有问题
i++
if i>3 then
open(w_error)
else
messagebox("提示","密码输入错误。请重新输入")
//open(w_error)//能实现。输入密码正确时也能实现先弹出密码错误提示,再打开错误窗口。且错误窗口确定后登录窗口不关闭
return
end if
else
// */
open(w_operation)//打不开

end if
close(parent)
就是开始有注释的位置有问题,因为我和那两个显示密码的显示框的内容明明显示是一样的,但if pwd<>pwdr 仍然通过了给出错误提示并在三次后能弹出强制退出对话框。


[img=http://hi.csdn.net/space-8808878-do-album-picid-812659.html][/img]这是我的程序运行到我输入正确的用户名和对应的密码时的截图
[解决办法]
程序运行时取出数据库中的密码,仔细对照一下,最大的可能是输入的密码与数据库中存在的密码不一致
[解决办法]
debug一下变量的取值情况就应该知道了。
[解决办法]
看看你的数据库表中的密码列的数据类型是什么?如果是char(10)的话,那么不管你的密码多长(当然小于10个字节)在它后面都会填上空格,和输入的密码比较时就会出错。改为varchar类型比较好,因为这个类型后面不填空格。
[解决办法]
设置断点,多调试下。。就明白了。

读书人网 >PB

热点推荐