| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1869 人关注过本帖
标题:高手求助
只看楼主 加入收藏
LIANG5505
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-9-9
结帖率:66.67%
收藏
 问题点数:0 回复次数:10 
高手求助
我做了一个登陆窗口,是用表里的数据来验证登陆,一直在循环,请帮忙看一下哪里错了
set talk off
close all
use 注册
do while not eof()
if thisform.text1.text=账户 and thisform.text2.text=密码 then
do form 主窗口.scx
skip
else
num=0
num=num+1
if num<=3 then
messagebox("你输入的账户或密码错误",65,"错误提示")
thisform.text1.value=""
thisform.text2.value=""
thisform.refresh
else
messagebox("登录失败!")
release thisform
endif
endif
enddo
thisform.release
use
set talk on
总是在不停的循环,机都卡死

[[it] 本帖最后由 LIANG5505 于 2008-9-25 14:57 编辑 [/it]]
搜索更多相关主题的帖子: 密码 release 
2008-09-25 14:55
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:0 
set talk off
close all
use 注册


num=0   &&可能问题在这里。


do while not eof()
    if thisform.text1.text=账户 and thisform.text2.text=密码 then
        do form 主窗口.scx
        skip
    else
        num=num+1
        if num<=3 then
            messagebox("你输入的账户或密码错误",65,"错误提示")
            thisform.text1.value=""
            thisform.text2.value=""
            thisform.refresh
        else
            messagebox("登录失败!")
            release thisform
        endif
    endif
enddo
thisform.release
use
set talk on
2008-09-25 15:23
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:0 
num总是=0,所以死循环。
2008-09-25 15:30
LIANG5505
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-9-9
收藏
得分:0 
还是不行
我把这一段删了,还是一样死循环,一直弹出对话框
messagebox("你输入的账户或密码错误",65,"错误提示")
2008-09-25 15:36
LIANG5505
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-9-9
收藏
得分:0 
还是不行
代码换成这个,还是死循环,一直出来对话框
set talk off
close all
use 注册
do while not eof()
if thisform.text1.text=账户 and thisform.text2.text=密码 then
do form 主窗口.scx
skip
else

messagebox("你输入的账户或密码错误",65,"错误提示")
 thisform.text1.value=""
thisform.text2.value=""
thisform.refresh

endif
enddo
thisform.release
use
set talk on
2008-09-25 15:38
szy345
Rank: 4
来 自:江苏——南京
等 级:贵宾
威 望:14
帖 子:336
专家分:14
注 册:2008-8-6
收藏
得分:0 
要是 账户、密码都是字符型的,
最好把这句改成
if allt(thisform.text1.text)=allt(账户) and allt(thisform.text2.text)=allt(密码)

***********************************************

set talk off
close all
use 注册
do while not eof()
   if allt(thisform.text1.text)=allt(账户) and allt(thisform.text2.text)=allt(密码) then
       do form 主窗口.scx
       thisform.release
   else
        messagebox("你输入的账户或密码错误",65,"错误提示")
        thisform.text1.value=""
        thisform.text2.value=""
        thisform.refresh
        select 注册
        skip
   endif
enddo

use
set talk on

[[it] 本帖最后由 szy345 于 2008-9-25 15:55 编辑 [/it]]

VFP技术交流,QQ群:20452307
欢迎您!
2008-09-25 15:50
ibmlang_002
Rank: 5Rank: 5
来 自:浙江-嘉兴
等 级:贵宾
威 望:18
帖 子:437
专家分:176
注 册:2008-8-30
收藏
得分:0 
首先可以肯定,是由于num=0放的位置不对。这个程序没必要这么写。其实是首先使用locate命令找到这个用户名,然后判断密码是否相同即可。还有thisform.text2.text要加alltrim

VFP
2008-09-25 15:52
ibmlang_002
Rank: 5Rank: 5
来 自:浙江-嘉兴
等 级:贵宾
威 望:18
帖 子:437
专家分:176
注 册:2008-8-30
收藏
得分:0 
name1=Trim(Thisform.mytextbox1.Value)
If Empty(name1)
    a=Messagebox("请输入用户名!",0+48,"信息窗口")
    Thisform.mytextbox1.SetFocus
    Return
Endif
Psw=Trim(Thisform.mytextbox2.Value)
If Empty(Psw)
    a=Messagebox("请输入口令!",0+48,"信息窗口")
    Thisform.mytextbox2.SetFocus
    Return
Endif
Use Password
Locate For Password.user_id=name1
If Found()=.F.
    =Messagebox("你不是指定用户,请与系统管理员联系!",64,"提示信息")
    Thisform.Release
Else
    ok=Thisform.decode(name1,Psw)
        If ok=.T.
        Thisform.myLabel3.Caption="欢迎使用!"
        user_name=name1
        pswD=psw
        ydl=1
        Release Thisform
    Else
        If m=3
            m=m+1
            Thisform.myLabel3.Caption="口令错,您无权使用"
            a=Messagebox("对不起,您无权使用!",0+48,"信息窗口")
            Release Thisform
        Else
            a=Messagebox("口令错,请重新输入!",0+48,"信息窗口")
            Thisform.myTextbox2.Value=""
            Thisform.myTextbox2.SetFocus
            m=m+1
        Endif
    Endif
Endif


其中Thisform.decode(name1,Psw)是密码解密函数

VFP
2008-09-25 15:57
LIANG5505
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-9-9
收藏
得分:0 
我想请问一下,我能登陆进去了,do form 主窗口.scx ,为什么还会有else 后面的对话框弹出.
这是什么问题,谢谢你们几个版主,呵呵
2008-09-25 15:59
ibmlang_002
Rank: 5Rank: 5
来 自:浙江-嘉兴
等 级:贵宾
威 望:18
帖 子:437
专家分:176
注 册:2008-8-30
收藏
得分:0 
解密过程:
PARAMETERS  name1,password1
DIMENSION f0(1,3)
pas=""
for i=1 to len(trim(password1))
n1=asc(substr(name1,1,1))
n2=asc(substr(name1,2,1))
n3=asc(substr(name1,3,1))
n=int((n1+n2+n3)/3)
tempchr=bitxor(asc(substr(password1,i,1)),n)
pas=pas+chr(tempchr)
ENDFOR

locate for password.user_id=name1
&&与口令库内的与姓名相对应的口令进行比较
GOTO RECNO()
SCATTER TO f0
IF ALLTRIM(f0(1,2))==ALLTRIM(pas)
result=.t.
quanxiana=f0(1,3)
else
result=.f.
endif
RETURN result

加密过程:
PARAMETERS  name1,password1,qx
pas=""
for i=1 to len(trim(password1))
n1=asc(substr(name1,1,1))
n2=asc(substr(name1,2,1))
n3=asc(substr(name1,3,1))
n=int((n1+n2+n3)/3)
tempchr=bitxor(asc(substr(password1,i,1)),n)
pas=pas+chr(tempchr)
ENDFOR

INSERT INTO password(user_id,key,quanxian) VALUES(name1,pas,qx)

[[it] 本帖最后由 ibmlang_002 于 2008-9-25 16:02 编辑 [/it]]

VFP
2008-09-25 16:01
快速回复:高手求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018002 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved