以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何增加注册页面  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=175612)

--  作者:BG小白
--  发布时间:2022/3/11 14:09:00
--  如何增加注册页面
   Case "logon.htm" \'登录页面
        wb.AddPageTitle("","pageheader","销售系统","由湛江辉迅基于Foxtable开发")
        If e.PostValues.ContainsKey("username") AndAlso e.PostValues.ContainsKey("password"Then \'判断是否是验证失败后的重新登录
            wb.AddTopTips("","toptip1","用户名或密码错误!").msec = 2000 \'如果用户通过登录按钮访问,则给用户一个2秒的提示.
       
End If
        wb.AddForm("","form1","logon.htm")
        With wb.AddInputGroup("form1","ipg1")
            .AddInput("username",
"
户名","text")
            .AddInput("password",
"
密码","password")
        End With
        With wb.AddButtonGroup("form1","btg1",True)
            .Add("btn1",
"
登录", "submit")
            .Add("btn1""注册""zc.htm")
        End With

点击注册按钮后,怎么能跳过验证,直接进入zc.htm这个页面

--  作者:有点蓝
--  发布时间:2022/3/11 14:21:00
--  
If e.Path = "logon.htm" \'验证用户名和密码
    If e.PostValues.ContainsKey("username") AndAlso e.PostValues.ContainsKey("password")  Then
        Dim Verified As Boolean \'用于标记用户是否通过了身份验证
        UserName = e.PostValues("username")
        Password = e.PostValues("password")
        If UserName = "张三" AndAlso Password = "888" Then  \'实际使用的时候,请改为从数据库读取用户名和密码进行比较
            Verified  = True
        ElseIf Username = "李四" AndAlso Password="999" Then
            Verified  = True
        End If
        If Verified Then
            UserID = Rand.NextString(16) \'生成随机用户ID
            UserName = EncryptText(UserName,"123","123") \'将用户名加密.
            Dim dr As DataRow = UserTable.Find("UserName = \'" & UserName & "\'")
            If  dr IsNot Nothing Then \'如果是重复登录,删除以前的登录信息
                dr.Delete()
            End If
            dr = UserTable.AddNew()
            dr("UserName") = UserName
            dr("UserID") = UserId
            dr("ActiveTime") = Date.Now \'记录登录时间
            wb.AppendCookie("username",UserName) \'将用户名和UserID写入cookie
            wb.AppendCookie("userid",UserID)
            wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'直接跳转到首页
            e.WriteString(wb.Build) \'生成网页
            Return \'必须的
        End If
    End If
elseIf e.Path = "zc.htm"
注册页的处理
Else \'其它页面从Cookie提取登录信息进行验证
    UserName = e.Cookies("username")  \'从cookie中获取用户名
    UserID = e.Cookies("userid")  \'从cookie中获取 随机ID
    Dim dr As DataRow = UserTable.Find("UserName = \'" & UserName & "\'")
    If dr IsNot Nothing AndAlso dr("UserID") = UserID Then  \'如果通过验证,更新活动时候,继续访问其它页面.
        dr("ActiveTime") = Date.Now \'更新活动时间
    Else \'如果验证失败
        wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'那么直接跳转到登录页面
        e.WriteString(wb.Build) \'生成网页
        Return \'必须的
    End If
End If
\'开始生成网页
Select Case e.path
    Case "logon.htm" \'登录页面
        wb.AddPageTitle("","pageheader","销售系统","由湛江辉迅基于Foxtable开发")
        If e.PostValues.ContainsKey("username") AndAlso e.PostValues.ContainsKey("password")  Then \'判断是否是验证失败后的重新登录
            wb.AddTopTips("","toptip1","用户名或密码错误!").msec = 2000 \'如果用户通过登录按钮访问,则给用户一个2秒的提示.
        End If
        wb.AddForm("","form1","logon.htm")
        With wb.AddInputGroup("form1","ipg1")
            .AddInput("username","户名","text")
            .AddInput("password","密码","password")
        End With
        With wb.AddButtonGroup("form1","btg1",True)
            .Add("btn1", "登录", "submit")
        End With
    Case "zc.htm"
……

--  作者:BG小白
--  发布时间:2022/3/12 4:18:00
--  
哪里不对哦,我把zc.htm写成了内部函数,按照上面的方式不对啊
--  作者:有点蓝
--  发布时间:2022/3/12 8:46:00
--  
贴出完整代码,或者上传实例说明问题
--  作者:BG小白
--  发布时间:2022/3/12 14:09:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.foxdb



--  作者:有点蓝
--  发布时间:2022/3/12 14:29:00
--  
只添加一个函数是没有用的。

参考登录页的用法,注册的验证要放到httprequest,看2楼的第一段红色代码,处理逻辑参考登录页的用户和密码验证方法

注册页的页面控件才能放到函数里,然后还要调用这个函数

\'开始生成网页
Select Case e.path
    Case "logon.htm" \'登录页面
        wb.AddPageTitle("","pageheader","销售系统","由湛江辉迅基于Foxtable开发")
        If e.PostValues.ContainsKey("username") AndAlso e.PostValues.ContainsKey("password")  Then \'判断是否是验证失败后的重新登录
            wb.AddTopTips("","toptip1","用户名或密码错误!").msec = 2000 \'如果用户通过登录按钮访问,则给用户一个2秒的提示.
        End If
        wb.AddForm("","form1","logon.htm")
        With wb.AddInputGroup("form1","ipg1")
            .AddInput("username","户名","text")
            .AddInput("password","密码","password")
        End With
        With wb.AddButtonGroup("form1","btg1",True)
            .Add("btn1", "登录", "submit")
        End With
    Case "zc.htm"
Functions.Execute("注册",e

--  作者:BG小白
--  发布时间:2022/3/12 14:32:00
--  
我加了啊
Select Case e.path
    Case "logon.htm" \'登录页面
        wb.AddPageTitle("","pageheader","销售系统","由湛江辉迅基于Foxtable开发")
        If e.PostValues.ContainsKey("username") AndAlso e.PostValues.ContainsKey("password")  Then \'判断是否是验证失败后的重新登录
            wb.AddTopTips("","toptip1","用户名或密码错误!").msec = 2000 \'如果用户通过登录按钮访问,则给用户一个2秒的提示.
        End If
        wb.AddForm("","form1","logon.htm")
        With wb.AddInputGroup("form1","ipg1")
            .AddInput("username","户名","text")
            .AddInput("password","密码","password")
        End With
        With wb.AddButtonGroup("form1","btg1",True)
            .Add("btn1", "登录", "submit")
            .Add("btn1", "注册", "addnew.htm")
        End With
    Case "addnew.htm" \'登录页面
        Functions.Execute("注册",e)

--  作者:有点蓝
--  发布时间:2022/3/12 14:46:00
--  
就是做测试,也要认真点。如果英文不好,可以考虑使用中文的页面名称,addnew这只能名称容易让产生误会。

那么还差第一步

If e.Path = "logon.htm" \'验证用户名和密码
    If e.PostValues.ContainsKey("username") AndAlso e.PostValues.ContainsKey("password")  Then
        Dim Verified As Boolean \'用于标记用户是否通过了身份验证
        UserName = e.PostValues("username")
        Password = e.PostValues("password")
        If UserName = "张三" AndAlso Password = "888" Then  \'实际使用的时候,请改为从数据库读取用户名和密码进行比较
            Verified  = True
        ElseIf Username = "李四" AndAlso Password="999" Then
            Verified  = True
        End If
        If Verified Then
            UserID = Rand.NextString(16) \'生成随机用户ID
            UserName = EncryptText(UserName,"123","123") \'将用户名加密.
            Dim dr As DataRow = UserTable.Find("UserName = \'" & UserName & "\'")
            If  dr IsNot Nothing Then \'如果是重复登录,删除以前的登录信息
                dr.Delete()
            End If
            dr = UserTable.AddNew()
            dr("UserName") = UserName
            dr("UserID") = UserId
            dr("ActiveTime") = Date.Now \'记录登录时间
            wb.AppendCookie("username",UserName) \'将用户名和UserID写入cookie
            wb.AppendCookie("userid",UserID)
            wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'直接跳转到首页
            e.WriteString(wb.Build) \'生成网页
            Return \'必须的
        End If
    End If
elseIf e.Path = "zc.htm"
注册页的处理必须放到这里,参考上面logon.htm的用法
Else \'其它页面从Cookie提取登录信息进行验证
    UserName = e.Cookies("username")  \'从cookie中获取用户名
    UserID = e.Cookies("userid")  \'从cookie中获取 随机ID