回 帖 发 新 帖 刷新版面

主题:经典的程序代码(仅供学习参考)

登陆模块是每个应用程序所必须的,下面共同分享在学习中领悟到其妙处(VISUAL FOPRO 数据库应用系统案例精选)
登陆按钮的click事件:
if alltrim(thisform.txtUserName.value)==""
   messagebox("请输入用户名!",48,'提示信息')
   thisform.txtUserName.setfocus      &&指针于当前指定txtUserName位置(下形式同)
   return
endif

if alltrim(thisform.txtPwd.value)==""
   messagebox("请输入密码!",48,'提示信息')
   thisform.txtPwd.setfocus
   return
endif

Select 用户表
cname=alltrim(thisform.txtUserName.value)
ppassword=alltrim(thisform.txtPwd.value)
Set order to 用户名      &&指定控制索引文件
set exact on             &&设置字符精确比较   
counter=counter+1        &&计算登陆次数
seek cname               &&查找输入的用户名
   If !found()
        if counter>=3         &&限定登陆次数
           messagebox('您不是本系统的合法用户,请退出或联络系统管理员',16,"系统提示")
           thisform.release
           quit
        else 
           messagebox("用户名不存在,请重新输入!",48,"错误提示")  
           thisform.txtUserName.setfocus
           return
        endif
   Else
        If alltrim(用户表.密码)!=ppassword
           if counter>=3         &&限定登陆次数
              messagebox('您不是本系统的合法用户,请退出或联络系统管理员',16,"系统提示")
              thisform.release
              quit
           else
              messagebox('密码错误,请重新输入!',48,"错误提示")
              thisform.txtPwd.value=''
              thisform.txtPwd.setfocus
              return
           endif   
        Else
          UserName=Alltrim(Thisform.txtUserName.Value)
        *  Do Form Form\welcome
          Thisform.Release
        Endif
   Endif    
Set exact off      &&设置字符非精确比较

[size=3]
业余时间别忘了登陆我的网站,里面有你空闲时最想要的宝藏
请登陆:http://www.freesurvey.net.cn?SOURCE-6B08B316-7D3C-46B6-8684-99C034665870
有什么见解请回复到我油箱:chenggongqiyejia@163.com[/size]

回复列表 (共9个回复)

沙发

谢谢楼主为论坛的奉献!
像你学习!!!

板凳

不错!顶一下!
...
if alltrim(thisform.txtPwd.value)==""
...
改成 
...
if empty(alltrim(thisform.txtPwd.value))
...  
也可以!但不能用“空”作密码了,有人习惯不用密码!楼主的代码中,登陆次数限制在‘用户名’和‘密码’都不为空!任一为空就不限制次数了!变量counter也要注意设定!
...

3 楼

好象很繁琐

4 楼

大部分可以参考,但实际使用时要注意如下:
1,存放在表的口令应作加密处理,不宜直接保存与直接使用.
2,不宜直接指出用户不存在,避免被恶意地猜用户名.可指出"用户不存在或密码错误".

5 楼


谢谢...

6 楼

没什么用----纯粹的教学

功能实现了,但不健壮,实际做系统不会这样写的(相同情况下)

7 楼



请问一下4楼,如何对“存放在表的口令作加密处理”呢!

8 楼

[quote]

请问一下4楼,如何对“存放在表的口令作加密处理”呢![/quote]
不好意思,一年后才回复[em12]
1、口令是以字符串组成的,加密就是将该字符串加密,本人常用方法是替换与换位。
替换——如将"A"换成"B"或将“A”变成“65”等
换位——如“abcd”换成“bcda”或“cbda”等

2、还有,可以用加位、插入和密匙方法,不过通常不会用单一的加密方法,应组合使用。实际应用时,我同时用替换、多次换位、插入方法对口令加密,自己也根本看不懂加密后的字符串。

3、当然实现这些加密是用一个过程(自定义函数)搞掂,加密后得到的字符串直接保存到表中就OK了。这样,就算让别人看到了保存了口令的字符串也不怕了。

4、使用时输入口令字符串,用上述过程运算,看结果是否与保存在表中的对应的字符串是否相同来判断口令是否正确。

9 楼


[color=0000FF][size=3]谢谢8楼老师的指导![/size][/color]

我来回复

您尚未登录,请登录后再回复。点此登录或注册