以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 用授权后跳转链接,第一进入网页cookies未生成 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=121838) |
|
-- 作者:fubblyc -- 发布时间:2018/7/13 17:04:00 -- 用授权后跳转链接,第一进入网页cookies未生成 甜老师, 直接跳转链接:http://yijiansoft.net/yhqshouye.htm 获取的cookies,用来做验证码没问题 授权跳转,cookies 第一次没有获取到,要再一次刷新,才有cookies 授权跳转链接: https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8921022fc595bc93&redirect_uri=http%3a%2f%2fwww.yijiansoft.net&response_type=code&scope=snsapi_userinfo&state=antashandong#wechat_redirect 授权跳转代码: Dim AppId As String= dr("AppId") Dim Secret As String = dr("AppSecret") Dim zhangtao As String = dr("账套") 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 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 drwx = DataTables("WXUsers").sqlAddNew() 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 Else e.WriteString(jo.ToString) \'在用户浏览器显示错误信息 Return "" End If End If e.AppendCookie("openid",OpenID) e.AppendCookie("zhangtaowxzc",dr("账套")) sb.Append("<meta http-equiv=\'refresh\' c o n t e n t = \'0; u r l =/yhqshouye.htm\'>") \'sb.Append("<meta http-equiv=\'refresh\' c >") e.WriteString(sb.ToString) Else e.WriteString(jo.ToString) \'在用户浏览器显示错误信息 Return "" End If End If [此贴子已经被作者于2018/7/13 17:07:10编辑过]
|
|
-- 作者:fubblyc -- 发布时间:2018/7/13 17:05:00 -- 甜老师,你可以用手机去访问一下链接,我有做弹出。 会发现第一次进入 授权跳转的链接,不存在 yzm 的cookies 而直接进入的就会有存在。
[此贴子已经被作者于2018/7/13 17:15:40编辑过]
|
|
-- 作者:fubblyc -- 发布时间:2018/7/13 17:26:00 -- 甜老师,我看了, 用授权跳转的: https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8921022fc595bc93&redirect_uri=http%3a%2f%2fwww.yijiansoft.net&response_type=code&scope=snsapi_userinfo&state=antashandong#wechat_redirect cookies不会马上生效 而直接跳转的 http://yijiansoft.net/yhqshouye.htm 就可以。 授权跳转的,也是到http://yijiansoft.net/yhqshouye.htm这个页面 那要怎么处理呢。。。
[此贴子已经被作者于2018/7/13 17:31:54编辑过]
|
|
-- 作者:fubblyc -- 发布时间:2018/7/13 18:27:00 -- 注册的代码: .AddVcodeButton("vyz","获取验证码",2).Attribute=";" \'增加获取验证码按钮,2表示显示在右边 function getNum() 代码: var result = sendAjaxText(document.getElementById("mobi").value, "faduanxin.htm","",false); alert(result) faduanxin.htm代码: 发送成功后: e.AppendCookie("yzm", yzm) e.WriteString("发送完毕!如果60秒后没有收到短信请重新发送!") 照理说,e.AppendCookie("yzm", yzm)是在faduanxin.htm这个页面执行,在注册页面应该有增加cookies才对。 就像直接访问http://yijiansoft.net/yhqshouye.htm一样。 那为什么授权跳转的,就不会生效呢。。。
|
|
-- 作者:有点甜 -- 发布时间:2018/7/13 18:32:00 -- 1、加入msgbox,看AppendCookie的代码是否执行了。
执行 AppendCookie 以后,要继续跳转到另一个网页,cookie才会生效的。
2、你也可以使用vars变量记录值,注意vars变量的名称,要改成 用户名_yzm,要区别不同的用户名。 |
|
-- 作者:fubblyc -- 发布时间:2018/7/14 9:02:00 -- 甜老师,如果用vars变量 我是用js来判断验证码是否正确: 注册页面wxzhuce.htm wb.AddForm("","form1","").Attribut e = "onsubmi t=\'return valid()\'" \'调用函数
valid函数代码: //获取cookie字符串 var strCookie=document.cookie; //将多cookie切割为多个名/值对 var arrCookie=strCookie.split("; "); var yzm; //遍历cookie数组,处理每个cookie对 for(var i=0;i<arrCookie.length;i++){ var arr=arrCookie[i].split("="); alert(arr[0] + arr[1]); //找到名称为yzm的cookie,并返回它的值 if("yzm"==arr[0]){ yzm =arr[1]; break; } } alert("验证码cookies:" + yzm) if (v3 !== yzm) {alert("验证码错误");return false} 那用vars 要怎么做呢? [此贴子已经被作者于2018/7/14 9:05:22编辑过]
|
|
-- 作者:fubblyc -- 发布时间:2018/7/14 9:26:00 -- 老师,执行 AppendCookie 以后,要继续跳转到另一个网页,cookie才会生效的。 http://yijiansoft.net/yhqshouye.htm 这样cookie是有生效。因为在wxzhuce.htm 注册页面 通过Js执行了faduanxin.htm里的添加cookie 然后返回wxzhuce.htm 但是为什么用跳转的就不行呢。 https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8921022fc595bc93&redirect_uri=http%3a%2f%2fwww.yijiansoft.net&response_type=code&scope=snsapi_userinfo&state=antashandong#wechat_redirect
[此贴子已经被作者于2018/7/14 9:44:50编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2018/7/14 10:03:00 -- 不要使用e.AppendCookie If Verified AndAlso e.Path = "logon.htm" Then \'如果用户访问的是登录页,且身份验证成功
wb.AppendCookie("username",UserName) \'将用户名和密码写入cookie wb.AppendCookie("password",Password) wb.InsertHTML("<meta http-equiv=\'Refresh\' content=\'0; url=/default.htm\'>") \'直接跳转到首页 e.WriteString(wb.Build) \'生成网页 Return \'必须的 [此贴子已经被作者于2018/7/14 10:03:37编辑过]
|
|
-- 作者:fubblyc -- 发布时间:2018/7/14 10:22:00 -- 蓝老师,发短信的页面faduanxin.htm代码: Dim f As String = http.responseText If f.Contains("SUCCESS") And f.Contains("0") Then PopMessage("发短信:" & yzm) wb.AppendCookie("yzm", yzm) \'e.WriteString("发送完毕!如果60秒后没有收到短信请重新发送!") e.WriteString(wb.Build) \'生成网页 Else e.WriteString(f) End If 是有生成cookie,如下图。 function valid(){ //获取cookie字符串 var strCookie=document.cookie; //将多cookie切割为多个名/值对 var arrCookie=strCookie.split("; "); var yzm; var yzmy; var zhangtaowxzc1; //遍历cookie数组,处理每个cookie对 for(var i=0;i<arrCookie.length;i++){ var arr=arrCookie[i].split("="); alert(arr[0] + arr[1]); //找到名称为yzm的cookie,并返回它的值 if("yzm"==arr[0]){ yzm =arr[1]; //break; } else if("zhangtaowxzc1"==arr[0]){ zhangtaowxzc1 =arr[1]; break; } } alert("验证码cookies:" + yzm) if (v3 !== yzm) {alert("验证码错误");return false} } 弹出 验证码cookies:不存在的英文 验证码错误
[此贴子已经被作者于2018/7/14 10:25:30编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2018/7/14 10:27:00 -- 添加cookie的页面结束后js才能取到值,也就是跳转到其它页面,其它页面的js才能取到值。 如果要在当前页面使用,可以使用标记数据http://www.foxtable.com/mobilehelp/scr/0127.htm
|