以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  cookies 没有起效果  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=108663)

--  作者:fubblyc
--  发布时间:2017/10/26 18:46:00
--  cookies 没有起效果
老师,不知道是不是我用法不对,cookies没有添加成功
这是添加cookies,弹出的openid是有的

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171026184450.png
图片点击可在新窗口打开查看
这是获取cookies,弹出的没有openid

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

代码如下:
添加cookies:
    Dim ul As String  = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code"
    ul = CExp(ul,appid,secret,e.GetValues("code"))
    
    Dim hc As new HttpClient(ul)
    Dim jo As JObject = JObject.Parse(hc.GetData)
    If jo("openid") IsNot Nothing Then \'如果获取openid成功(成功的话,还会同时返回一个accesstiken,用于获取用户详情)
        OpenID = jo("openid")
        Dim drwx As DataRow  = DataTables("WXUsers").sqlFind("openid =\'" & Openid & "\'")
        If drwx IsNot Nothing Then
            UserNamewx = drwx("nickname")
        Else
            ul = "https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN "
            \'根据openid和accesstoken获取用户详情,注意这里这个accesstoken不是普通accesston,只能用于网页授权
            hc = New HttpClient(CExp(ul, jo("access_token"), OpenId))
            jo = jo.Parse(hc.GetData)
            If jo("openid") IsNot Nothing Then
                UserNamewx = jo("nickname")
                drwx = DataTables("WXUsers").AddNew()
                Dim nms() As String = {"openid","nickname","sex","city","country","province","headimgurl"} \'""
                For Each nm As String In nms
                    drwx(nm) = jo(nm)
                Next
                drwx("账套") = zhangtao
                drwx("addtime") = Date.now
                drwx.Save
                DataTables("WXUsers").loadfilter = "Openid = \'\'"
                DataTables("WXUsers").load
            Else
                e.WriteString(jo.ToString) \'在用户浏览器显示错误信息
                Return
            End If
        End If
        e.AppendCookie("usernamewx",UserNamewx) \'用户名和openid存储在Cookie中
        e.AppendCookie("OpenID",OpenID)
        messagebox.show(Date.now & openid)
    Else
        e.WriteString(jo.ToString) \'在用户浏览器显示错误信息
        Return
    End If    
End If
e.WriteString(sb.ToString)


获取cookies的代码页面:
Dim e As  RequestEventArgs = args(0)
Dim wb As New weui


If e.PostValues.Count = 0 Then
    wb.AddPageTitle("","ph1","微信关联姓名","")
    wb.AddForm("","form1","")
    With wb.AddInputGroup("form1","ipg1","请您填写基本信息")
        With .AddInput("name","姓名","text")
            .Placeholder = "您的姓名"
        End With
    End With
    With wb.AddButtonGroup("form1","btg2",True)
        .Add("zc", "注册", "submit")
    End With
Else
    Dim openid As String = e.cookies("openid")
    messagebox.show(Date.now & openid)

    Dim dr As DataRow = DataTables("WXUsers").sqlFind("openid  =\'" & OpenID & "\'") \'根据openid找出对应的行
    If dr IsNot Nothing \'
        dr("name") = e.PostValues("name")
        dr.save()
    End If

    With wb.AddMsgPage("","msgpage","关联成功", "欢迎您的加入,请关闭此页面") \'生成成功提示页
    End With
    
End If
e.WriteString(wb.Build) \'生成网页

[此贴子已经被作者于2017/10/26 20:13:51编辑过]

--  作者:有点甜
--  发布时间:2017/10/26 19:45:00
--  

第一段的msgbox是否正常弹出了?

 

第二段的msgbox你什么时候调用的?用什么样的调用?


--  作者:fubblyc
--  发布时间:2017/10/26 19:52:00
--  
甜老师,标黄色的都正常弹出,调用的msg只有前面的时间,没有cookies

调用,标黄色的:

获取cookies的代码页面:
Dim e As  RequestEventArgs = args(0)
Dim wb As New weui

If e.PostValues.Count = 0 Then
    wb.AddPageTitle("","ph1","微信关联姓名","")
    wb.AddForm("","form1","")
    With wb.AddInputGroup("form1","ipg1","请您填写基本信息")
        With .AddInput("name","姓名","text")
            .Placeholder = "您的姓名"
        End With
    End With
    With wb.AddButtonGroup("form1","btg2",True)
        .Add("zc", "注册", "submit")
    End With
Else
    Dim openid As String = e.cookies("openid")
    messagebox.show(Date.now & openid)

    Dim dr As DataRow = DataTables("WXUsers").sqlFind("openid  =\'" & OpenID & "\'") \'根据openid找出对应的行
    If dr IsNot Nothing \'
        dr("name") = e.PostValues("name")
        dr("mobi") = e.PostValues("mobi")
        dr.save()
    End If

    With wb.AddMsgPage("","msgpage","关联成功", "欢迎您的加入,请关闭此页面") \'生成成功提示页
    End With
    
End If
e.WriteString(wb.Build) \'生成网页

[此贴子已经被作者于2017/10/26 20:13:13编辑过]

--  作者:有点甜
--  发布时间:2017/10/26 20:36:00
--  

你尝试这样写

 

 

        e.AppendCookie("OpenID",OpenID)
        e.Cookies.add("OpenID",OpenID)
        messagebox.show(Date.now & openid)

--  作者:fubblyc
--  发布时间:2017/10/26 21:09:00
--  
甜老师,我这三个依次试过去,都不行。不知道到底哪个环节出错了。

这三个我都试过,都不行。不知道是不是上面代码的问题。
        wb.AppendCookie("OpenID",OpenID)
        e.AppendCookie("OpenID",OpenID)
        e.Cookies.add("OpenID",OpenID)
        messagebox.show(Date.now & openid)
第一个弹出有openid

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20171026210821.png
图片点击可在新窗口打开查看
第二个弹出就没有cookies了

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

[此贴子已经被作者于2017/10/26 21:09:21编辑过]

--  作者:有点甜
--  发布时间:2017/10/26 21:14:00
--  

1、注意大小写,大小写敏感的。

 

 

2、你测试过程中,有没有退出浏览器?

 


--  作者:fubblyc
--  发布时间:2017/10/26 21:24:00
--  
我全部换成了小写,也用别人的微信打开。还是不行。

应该就是哪一个小地方没想到的地方搞错了。

但是怎么也都没有报错,也找不出来。

其他地方的cookies都可以用
[此贴子已经被作者于2017/10/26 21:25:06编辑过]

--  作者:有点甜
--  发布时间:2017/10/26 21:26:00
--  
以下是引用fubblyc在2017/10/26 21:24:00的发言:
我全部换成了小写,也用别人的微信打开。还是不行。

应该就是哪一个小地方没想到的地方搞错了。

但是怎么也都没有报错,也找不出来。
[此贴子已经被作者于2017/10/26 21:24:15编辑过]

 

修改成小写后,再打开,看代码是否真正修改了。单纯修改大小写不做其它修改不会保存代码。


--  作者:fubblyc
--  发布时间:2017/10/26 21:40:00
--  
甜老师,我看了,是有都改了。
哈哈,有点崩溃的感觉。

--  作者:有点甜
--  发布时间:2017/10/26 21:52:00
--  

1、单独做一个新的网页测试cookie功能,少量代码测试cookie功能,看是否正常。

 

2、如果不正常,说明你测试过程不正确;如果正常,说明你原来代码有问题。