Foxtable(狐表)用户栏目专家坐堂 → 在学习狐表官方学习及考试写法时 非微信授权登录的情况下 WeChatUsers怎么无法新增用户数据进去呢?是不是只有微信扫码才能新增用户数据呢?


  共有3694人关注过本帖树形打印复制链接

主题:在学习狐表官方学习及考试写法时 非微信授权登录的情况下 WeChatUsers怎么无法新增用户数据进去呢?是不是只有微信扫码才能新增用户数据呢?

帅哥哟,离线,有人找我吗?
cnsjroom
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
在学习狐表官方学习及考试写法时 非微信授权登录的情况下 WeChatUsers怎么无法新增用户数据进去呢?是不是只有微信扫码才能新增用户数据呢?  发帖心情 Post By:2021/3/21 14:03:00 [显示全部帖子]

在学习狐表官方学习及考试写法时,非微信授权登录的情况下

图片点击可在新窗口打开查看此主题相关图片如下:12.png
图片点击可在新窗口打开查看
WeChatUsers怎么无法新增用户数据进去呢?是不是只有微信扫码才能新增用户数据呢?
当前还没有使用微信进行测试,所以想后台直接新增用户数据进去  有没有办法呢?

方法一:无法直接保存数据
Dim cmd1 As New SQLCommand
cmd1.C
cmd1.CommandText = "Insert Into WeChatUsers(OpenID,Nickname,Sex,Grade,Password,Token) Values(?,?,?,?,?,?)"
cmd1.Parameters.Add("@OpenID","1234567891")
cmd1.Parameters.Add("@Nickname","黄立望")
cmd1.Parameters.Add("@Sex","1")
cmd1.Parameters.Add("@Grade","1")
cmd1.Parameters.Add("@Password","666")
cmd1.Parameters.Add("@Token","12")
cmd1.ExecuteNonQuery

方法二:直接在项目中新增数据也是如图  

无法进行保存  只有不保存数据才能关闭项目

有没有办法解决呢?


[此贴子已经被作者于2021/3/21 18:08:27编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)到后台数据库修改表,把“允许NULL值...  发帖心情 Post By:2021/3/22 0:23:00 [显示全部帖子]

OK  谢谢老师的指导  已经可以保存了
当前新增了三个用户  运行效果提示如下:
只有1234567890这个id可以成功答题   1234567891  1234567892 两个不能答题

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


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


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

经排查如下【试题表里面有对应1234567891  1234567892的数据】

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


图片点击可在新窗口打开查看此主题相关图片如下:55.png
图片点击可在新窗口打开查看
【UsersTestForm】表里面只有1234567890 没有1234567891  1234567892的数据  初步判断 这个楼上图片提示联系客服的原因 

图片点击可在新窗口打开查看此主题相关图片如下:66.png
图片点击可在新窗口打开查看
 老师可以指导下不呢
[此贴子已经被作者于2021/3/22 0:32:51编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)自己调试一下NewQuestion函数  发帖心情 Post By:2021/3/22 9:39:00 [显示全部帖子]

经按照老师的指导  做了调试
发现问题的根源:
是用户在登录的时候,无法往WeChatUsersLogin里面写登录信息,main函数是固定了nickname为张三,经在login函数里面添加了vars(“nickname”)变量后  直接添加如下红色代码运行可以往对应的WeChatUsersLogin表里面记录当前用户登录信息。问题得以解决啦!

'Dim openid As String = vars("openid")
'Dim nickname As String = vars("nickname")
'MessageBox.Show(nickname)
'
'If openid > "" Then
    ''Dim dr As DataRow = DataTables("WeChatUsers").Find("OpenID = '" & openid & "'")
    '
    'Dim dtLogon As DataTable = DataTables("WeChatUsersLogin")
    'dr = dtLogon.Find("OpenID='" & openid & "' and Online = 1 and LoginTime > '" & Date.Today & "'")
    'If dr Is Nothing Then
        'dtLogon.ReplaceFor("Online",0,"OpenID='" & openid & "' and Online = 1")
        'dtLogon.RemoveFor("Online = 0")
        'dr = dtLogon.AddNew()
        'dr("OpenID") = openid
        'dr("Nickname") = nickname
        'dr("Online") = True
    'End If
    ''dr("DeveloperID") = devid
    'dr("LoginTime") = Date.Now
    'dr("IP") = e.Request.RemoteEndPoint().Address.ToString()
    'dr.Save
'End If



当前点击全部错题,没有错误的题目出现,是啥回事情呢?

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

[此贴子已经被作者于2021/3/22 9:47:59编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)首先不要使用全局变量,通过登录账号...  发帖心情 Post By:2021/3/22 10:13:00 [显示全部帖子]

经查是T_UpdateErrorQuestions这个函数中的poenid被指定了  更改了vars("openid")后,再次运行计划任务,当前问题得以解决。

在老师的指导下,目前已经完成了整个试题系统在本地进行测试(微信公众号测试还有待域名备案通过之后方可进行)的思路学习和摸索,当前是采用了全局变量的方式来进行数据的固定传递,在一个服务启动下 多人登录的情况下是会有问题的

按照老师的指导:通过登录名查找openid之后 再直接登录 是不是同步写入cookie数据中,便于系统进行调用。

还有一个弱弱的问题:那就是项目中的exit函数,要怎么直接调用呢

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)openid写入cookie数据中使用exit函数...  发帖心情 Post By:2021/3/22 11:35:00 [显示全部帖子]

exit函数代码:
Dim e As RequestEventArgs = Args(0)
Dim wb As New weui
Dim dr As DataRow = DataTables("WeChatUsersLogin").Find("[OpenID] = '" & e.Cookies("OpenID") & "' and Online = 1")
If dr IsNot Nothing Then
    dr("Online") = False
    dr.Save
    dr = DataTables("UsersTestForm").Find("[OpenId] = '" & e.Cookies("OpenID") & "' and IsCompleted = 0","TestID desc")
    If dr IsNot Nothing Then
        dr("IsCompleted") = True
        dr("CorrectRate") = dr("CorrectQty") / dr("QuestionQty")
        dr.Save
    End If
End If
e.Appendcookie("openid","")
e.Appendcookie("nickname","")
e.WriteString("<meta http-equiv='refresh' c>") '跳转到登录页
e.WriteString(wb.Build)

begin函数代码:
With wb.AddTabBar("", "tb1", 0)
        .AddPage("page1","我","./Home.png")
        If qt=1 Then
            .AddPage("page2","练习","./Test.png")
            .AddPage("page3","回顾","./Review.png")
        Else
            .AddPage("page2","考试","./Test.png")
        End If
        .AddButton("bt1","退出","./images/cell.png","exit.htm")
    End With


经过测试运行  exit函数能够清除对应的cookie值 也能够进行online在线值的取消   如果这个时候用户后退  可以回到exit之前的页面内容  可以点击查看除了开始答题按钮之外的所有内容记录  
有没有办法让用户注销之后  后退页面都不能正常浏览了呢?
是不是直接加入判断  online=false时  全部不能使用了

[此贴子已经被作者于2021/3/22 11:58:22编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)退出时把页面所有cookie都清空,可以...  发帖心情 Post By:2021/3/22 12:08:00 [显示全部帖子]

已经在exit函数中写了
e.Appendcookie("openid","")
e.Appendcookie("nickname","")
进行清空cookie  但是没有采用checktoken函数内容。
原来的checktoken函数代码为:
'检查授权
Dim id As String = Args(0)
Dim e As RequestEventArgs = args(1)

Dim idValue As String = e.Cookies("id") '从Cookie取加密的内容
If idValue > "" Then
    Dim pas As String = DecryptText(idValue,Vars("Key1"),Vars("key2")) '解密参数
    If pas > "" Then
        Dim arr() As String = pas.Split("|")
        Dim qt As String = e.Cookies("cqt")
        If qt <> arr(3) Then Return Nothing
        If id = arr(0) Then '如果解密后的第一个参数和id参数一致
            Dim d As Date = CDate(arr(2))
            If d >= Date.Today Then '如果Cookie中的日期大于等于今天
                Dim dr As DataRow = DataTables("WeChatUsers").Find("[_Identify] = " & id) '查询用户表是否存在此id的主键
                If dr IsNot Nothing AndAlso dr("OpenID") = arr(1) Then '查询的openid是否和解密的第二个参数一致
                    Return dr
                End If
            End If
        End If
    End If
End If
Return Nothing
原来的exit函数代码为:

Dim e As RequestEventArgs = Args(0)

Dim id As String = e.PlainText

If id > "" Then

    Dim arr() As String = id.Split("|")

    Dim dr As DataRow = Functions.Execute("CheckToken",arr(0),e)

    If dr IsNot Nothing Then

        dr = DataTables("WeChatUsersLogin").Find("[OpenID] = '" & dr("OpenID") & "' and Online = 1")

        If dr IsNot Nothing Then

            dr("Online") = False

            dr.Save

            If arr.Length = 2 AndAlso arr(1) = "Y" Then

                dr = DataTables("UsersTestForm").Find("[OpenId] = '" & dr("OpenID") & "' and IsCompleted = 0","TestID desc")

                If dr IsNot Nothing Then

                    dr("IsCompleted") = True

                    dr("CorrectRate") = dr("CorrectQty") / dr("QuestionQty")

                    dr.Save

                End If

            End If

        End If

    End If

End If

e.WriteString("OK")


现在的exit函数代码为:

Dim e As RequestEventArgs = Args(0)

Dim wb As New weui

Dim dr As DataRow = DataTables("WeChatUsersLogin").Find("[OpenID] = '" & e.Cookies("OpenID") & "' and Online = 1")

If dr IsNot Nothing Then

    dr("Online") = False

    dr.Save

    dr = DataTables("UsersTestForm").Find("[OpenId] = '" & e.Cookies("OpenID") & "' and IsCompleted = 0","TestID desc")

    If dr IsNot Nothing Then

        dr("IsCompleted") = True

        dr("CorrectRate") = dr("CorrectQty") / dr("QuestionQty")

        dr.Save

    End If

End If

e.Appendcookie("openid","")

e.Appendcookie("nickname","")

e.WriteString("<meta http-equiv='refresh' c>") '跳转到登录页

e.WriteString(wb.Build)



老师可以指导下  怎么能够完美实现退出后,原有任何记录都不允许访问。当前exit代码只能实现对应的online状态和页面的正常返回


当前还有一个问题 如果退出之后再次登录当前账户  不会报错   如果是登录别的新账户 就会报错

具体如下:




[此贴子已经被作者于2021/3/22 14:48:08编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)checktoken函数还用到其它cookie:e....  发帖心情 Post By:2021/3/22 14:26:00 [显示全部帖子]

没有新增其他内容作为条件判断   只是将openid作为值写入cookie 便于其他地方进行引用
e.Cookies.Clear
全部用这个方式清空后  能够成功解决楼上报错问题

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

但是后退后 上一个账户的记录还是可以查看   除了不能开始答题外  其他的都可以看  这个问题都没有搞定  所以还得请教老师了
[此贴子已经被作者于2021/3/22 14:47:50编辑过]

 回到顶部