要求
如密码和用户正确的话,进入另一个窗口。
提供程序源最好
谢谢!
不好意思,我也是新学VFP,就算借楼主的帖交份作业吧,请各位高手指正。
首先要有一个表 tabid.dbf 用于存放用户名和密码,至少有“用户名”和“密码”两个字段。
设计一个登录表单,至少有两个文本框分别为text1 (用于填写用户名)和text2(用于填写密码)。至少有二个命令按钮command1(确定)和command2(取消)
再有,本人习惯添加一个标签控件 label1,并设其 Caption 初始值为“0”
command1的代码如下
*设置用户名不能为空,如允许为空则不需此步骤
If Len(Alltrim(Thisform.text1.Value))=0
Messagebox('请输入用户名!')
Return
Endif
*设置密码不能为空,如允许为空则不需此步骤
If Len(Alltrim(Thisform.text2.Value))=0
Messagebox('请输入密码!')
Return
Endif
Use tabid.Dbf In 0
Locate For Alltrim(用户名)==Alltrim(Thisform.text1.Value) &&定位到与输入用户名相同的记录
*如果没有找到相同记录时执行下面代码
If Eof()
Use
Messagebox('没有此用户!')
Thisform.text1.Value=''
Thisform.text2.Value=''
Thisform.text1.SetFocus
Thisform.label1.Caption=Alltrim(Str(Val(Thisform.label1.Caption)+1)) &&累计出错的次数
If Thisform.label1.Caption='3' &&出错三次后自动退出
Messagebox('连续三次输入错误,系统将退出!')
Use
Quit
Endif
Return
ENDIF
*找到后执行的动做
If Alltrim(Thisform.text2.Value)==Alltrim(密码)
Use
在这里添加在正确登录后你要继续执行的程度
Else
Use
Messagebox('密码错误!')
Thisform.text2.Value=''
Thisform.text2.SetFocus
Thisform.label1.Caption=Alltrim(Str(Val(Thisform.label1.Caption)+1))
If Thisform.label1.Caption='3' &&出错三次后自动退出
Messagebox('连续三次输入错误,系统将退出!')
Use
Quit
Endif
Return
ENDIF
没做测试。为使代码在帖子里美观,句首加入了全角空格,所以不能直接复制代码。请高手指正!
[此贴子已经被作者于2006-3-14 20:43:54编辑过]
下面是我写的一个程序里的代码
SELECT 授权用户
locate for ALLTRIM(thisform.text2.value)==ALLTRIM(授权用户.用户名) and ALLTRIM(thisform.text1.Value)==ALLTRIM(授权用户.授权密码)
if !eof()
if alltrim(级别)=="管理员" &&这一段是权限设置
PUBLIC jb,username
jb=1
username=alltrim(姓名)
else
public jb,username
jb=0
username=alltrim(姓名)
endif
do 菜单.mpr
DO maintool &&这是一个工具栏
thisform.release
else
#define missmatch_loc "用户或口令错,请重新登录!"
wait window missmatch_loc timeout 1
thisform.text2.value=''
thisform.text1.value=''
thisform.text1.setfocus
thisform.text2.setfocus
numcount=numcount+1
if numcount=4
numcount=0
mess =messagebox("三次口令错,将退出程序!",4+16+2,"退出")
clear event
release thisform
endif
ENDIF
版主说的结果正是我想要的,可我不知道该如何实现上述功能,还请明示,我的程序是下面这样的,就是密码库的数据实际上公开的,只要是会VFP就能打开就能看到,如何将其加密,验证时再解密,请版主帮忙解决。谢了!
i=i+1
SELECT mima
LOCATE FOR mima.username=THISFORM.combo1.Value
DO CASE
CASE i<=3 AND FOUND() AND THISFORM.text1.Value=mima.password &&输入次数未超过3次且用户名正确、口令正确
operat=THISFORM.combo1.Value
INSERT INTO login(user_id,user_name,login_time) VALUES(mima.user_id,mima.user_name,DATETIME())
messagebox("正在登陆系统!",0+48+0,"登陆!")
thisform.release
do c:\gz\menu\menu.mpr
CASE i<=3 AND FOUND() AND THISFORM.text1.Value!=mima.password &&输入次数未超过3次且用户名正确、口令不正确
MESSAGEBOX("你输入的密码有误,请重新输入!","系统提示信息")
THISFORM.Text1.Value=""
THISFORM.Text1.Setfocus
CASE i<=3 AND NOT FOUND() &&输入次数未超过3次且用户名不正确
MESSAGEBOX("操作员选择有误,请重新输入!","系统提示信息")
THISFORM.combo1.Value=""
THISFORM.Text1.Value=""
THISFORM.combo1.Setfocus
CASE i>3 &&输入次数超过3次
MESSAGEBOX("您是非法用户,本系统将自动退出!","系统提示信息")
quit
ENDCASE
[此贴子已经被作者于2006-9-14 22:35:51编辑过]