以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  移动端修改密码问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=173114)

--  作者:狐表(小白)
--  发布时间:2021/11/15 21:15:00
--  移动端修改密码问题
UserName 和 UserID 进行加密和随机生成后,保存在 在线用户表,移动端用户在修改密码时,如何获取未加密之前的 UserName 对用户表的 UserName 名验证,验证通过后修改用户表的 password ?给个例子,谢谢!
UserID = Rand.NextString(16) \'生成随机用户ID
UserName = EncryptText(UserName,"123","123") \'将用户名加密.

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看




[此贴子已经被作者于2021/11/15 21:16:30编辑过]

--  作者:有点蓝
--  发布时间:2021/11/15 22:12:00
--  
不明白您的下线用户和用户直接的关系,请提供实例说明问题
--  作者:狐表(小白)
--  发布时间:2021/11/16 8:52:00
--  
用户表是存储所有用户的账号密码,在线用户表是记录每个用户登录系统后加密账号和随机生成ID的临时表。用于浏览器身份安全验证,里面userid和username和浏览器的 Cookie(userid)和username相同,现在想让每个用户通过浏览器自己修改密码,怎么让浏览器的Cookie(userid)和用户表的userID进行验证?写到加粗字体代码那时不知道怎么处理了!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:身份验证.txt

修改密码htm:
\'修改密码
    Dim Verified As Boolean \'身份验证判断
    Dim UserName As String 
    Dim Password As String 
    Dim UserID As String
If e.Path = "xgmm.htm" \'打开的是修改密码网页时
  If e.PostValues.ContainsKey("oldpw") AndAlso e.PostValues.ContainsKey("newpw") Then
    UserName = e.Cookies("username")  \'从cookie中获取用户名
        UserID = e.Cookies("userid")  \'从cookie中获取随机ID
    Dim dr As DataRow 
    dr = DataTables("在线用户").Find("UserName = \'" & UserName & "\'") \'从在线用户表中获取相同用户名
    If dr IsNot Nothing AndAlso dr("UserID") = UserID Then  \'如果找到相同ID用户的话
   UserName = e.PostValues("username")
   Password = e.PostValues("password")
   \'MessageBox.Show("name=\'"& username &"\' And password=\'"& password &"\'")
   Dim s1 as string = e.PostValues("oldpw") \'旧密码
       Dim s2 as string = e.PostValues("newpw") \'新密码 
       Dim drz As DataRow
           drz = DataTables("用户").Find("UserName= \'" & UserName & "\'") \'从用户表中获取用户名
    If drz IsNot Nothing Then \'如果找到
   Verified = True  \'身份验证通过             
            End If
            If Verified Then   \'身份验证通过后
                If Password = s1 Then  \'输入的旧密码相同时
                   drz("Password") = drz("Password").replace(s1,s2)  \'用输入的新密码替换旧密码
   drz.save \'保存一下
   wb.AddTopTips("","toptip1","修改完成,请重新登录!").msec = 2000
   wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'修改完成后直接跳转到登录面    
                   e.WriteString(wb.Build) \'生成网页
                   Return \'必须的
                Else  \'输入的旧密码错误提示
   wb.AddTopTips("","toptip2","请输入正确的旧密码!").msec = 2000
    End If
            End If
    End If
  End If
    End If


[此贴子已经被作者于2021/11/16 9:01:59编辑过]

--  作者:有点蓝
--  发布时间:2021/11/16 9:03:00
--  
如果Cookie(userid)里是加密了的数据,做个解密就行了:http://www.foxtable.com/webhelp/topics/0351.htm

dim 解密后的id as string = DecryptText(e.Cookies("userid"),"123","123")

--  作者:狐表(小白)
--  发布时间:2021/11/16 9:29:00
--  

绿色调试窗口可以正常返回加密后的字符串,红色解密时报错!

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看
\'修改密码
Dim e As RequestEventArgs = args(0)
Dim wb As New weui
\'开始生成网页
Select Case e.path
    Case "xgmm.htm" 
        wb.AddForm("","form1","xgmm.htm")
        With wb.AddInputGroup("form1","rdg1","修改密码")
            .AddInput("oldpw","原密码:","password") \'旧密码
.AddInput("newpw","新密码:","password") \'新密码
        End With
        With wb.AddButtonGroup("form1","btg1",True)
            .Add("btn1","修改","submit")
        End With
e.WriteString(wb.Build) \'生成网页
End Select


    Dim UserName As String 
    Dim UserID As String
If e.Path = "xgmm.htm" \'打开的是修改密码网页时
  If e.PostValues.ContainsKey("oldpw") AndAlso e.PostValues.ContainsKey("newpw") Then

    UserName = e.Cookies("username") \'从cookie中获取用户名
            UserID = e.Cookies("userid")  \'从cookie中获取随机ID
MessageBox.Show("name=\'"& UserName &"\' And ID=\'"& UserID &"\'")

dim s as string = DecryptText(e.Cookies("username"),"123","123") \'从cookie中获取用户名解密
MessageBox.Show("name=\'"& s &"\' And ID=\'"& UserID &"\'")
  End If
    End If

[此贴子已经被作者于2021/11/16 9:30:27编辑过]

--  作者:狐表(小白)
--  发布时间:2021/11/16 9:49:00
--  
找到问题了,我把密匙弄错了,图片点击可在新窗口打开查看谢谢蓝老师!