当前位置: 首页 > news >正文

展示型网站建设公司如何对网站做优化

展示型网站建设公司,如何对网站做优化,安徽做网站公司哪家好,甘肃省集约化网站建设试点问题描述: 今天通过ajax调用方式做微信静默登录,发现本地可以跳转,到线上地址死活都不跳转,就像没起作用一般,经许久排查发现,是因为https和http域名的问题,线上只配置了http域名&#xff0…
问题描述:

    今天通过ajax调用方式做微信静默登录,发现本地可以跳转,到线上地址死活都不跳转,就像没起作用一般,经许久排查发现,是因为https和http域名的问题,线上只配置了http域名,所以导致https访问微信时无法实现跳转。
解决:

    1、配置https域名

    2、换为http访问

---------------------------------------------------------------------------------------------------------------------------------

附:ajax微信静默登录代码

梳理步骤:

1)静态页面调用

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>测试微信静默登录</title><script src="/static/plugins/jquery-2.1.4.min.js"></script>
</head>
<body><div class="login">这是首页啦~~~
</div>
<script>$(function(){$.ajax({url:"/admin/system.Login/islogin",type:"post",data:[],dataType:"json",success:function (res) {if (res.code == 200) {$('.login').html('登录成功');//alert("登录成功!即将跳转到主页...");window.location.href = "/index";return false;} else {if(res.code == 4000){// $('.login').html('<a href="' + res.data.url + '">跳转2:'+res.data.url +'</a>');$('.login').html('获取成功,即将跳转到授权页...');window.location.href = res.data.url;return false;}$('.login').html('授权失败,即将跳转到登录页...');window.location.href = '/login';return false;}}});});
</script>
</body>
</html>

2)后端代码

第一步:获取微信openid并缓存起来

接口1:首页-判断用户是否已登录接口

  public function islogin(){$type = @$_GET['type'];$param['user_id'] = user_id(false);//获取用户登录信息$wx_openid = Cache::get('wx_openid');//第一步:  判断用户是否已经登录if($param['user_id']){return success($param,'用户已登录');}//第二步: 用户未登录  判断是否为微信内登录?if(request()->isWx()) {//手机端微信//第三步  微信内用户静默授权  获取用户openid  1)存在 自动登录  2)不存在 跳转登录页面 去登录绑定if($wx_openid){//获取openid后的操作$model = new UserModel();$userInfo = $model->where('openid', $wx_openid)->find();if ($userInfo) {//已登录//设置登录成功缓存信息$loginInfo = LoginService::setlogin($userInfo);return success($loginInfo, '登录成功');}}else{$url = $this->getWxCode();return error('未登录',['url'=>$url], 4000);}}return error('用户未登录');}

函数1):获取微信code码方法

    public function getWxCode(){//生成ticket$ticket = uniqid(); // 生成唯一的ticketCache::set($ticket, '', 300);//微信网页授权url$appId = self::$appId;$redirect_uri = urlencode('https://www.myweb.com/admin/system.Login/saveWeiXinOpenId');$scope = 'snsapi_base';//默认静默登录if($type == 2){$scope = 'snsapi_userinfo';//授权登录}$baseUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize';$param = '?appid=' . $appId . '&redirect_uri=' . $redirect_uri . '&response_type=code&scope='. $scope .'&state=' . $ticket . '#wechat_redirect';$url = $baseUrl . $param;return $url;}

函数2:微信授权后回调页面处理函数

public function saveWeiXinOpenId(){$param = $this->params(['code/s'     => '','state/s' => '',]);$code = $param['code'];$ticket = $param['state'];$bool = Cache::has($ticket);if (!$bool) {// return ['code'=>4001,'msg'=>'已过期'];header('location:/login');//跳转去登录页exit;}$info = WxLoginService::getWeiXinOpenId($code);if (isset($info['errcode']) || !$info['openid']) {//授权失败直接跳登录页 再次登录// return ['code'=>4002,'msg'=>'获取微信OpenId错误','data'=>$info];header('location:/login');exit;}Cache::set($ticket, json_encode($info), 300);Cache::set('wx_openid', $info['openid'], 300);// session('wx_openid', $info['openid']); //这个方法不好使,换上面的cache缓存吧,原因暂不明// file_put_contents("openid-save.log", Cache::get('wx_openid')."---".date('Y-m-d H:i:s')."\n", FILE_APPEND);//获取openid后的操作$model = new UserModel();$userInfo = $model->where('openid', $info['openid'])->find();if (empty($userInfo)) {//未绑定过,直接去登录 然后绑定// return ['code'=>4003,'msg'=>'手机号不存在'];header('location:/login');exit;}//已绑定过,直接访问首页header('location:/index');exit;}//获取微信openid方法:WxLoginService::getWeiXinOpenId($code)public static function getWeiXinOpenId($code){$appId = self::$appId;$appSecret = self::$appSecret;$baseUrl = 'https://api.weixin.qq.com/sns/oauth2/access_token';$param = '?appid=' . $appId . '&secret=' . $appSecret . '&code=' . $code . '&grant_type=authorization_code';$url = $baseUrl . $param;$guzzHttp = new Client();$response = $guzzHttp->request('GET', $url, ['verify' => false]);$json = $response->getBody()->getContents();$data = json_decode($json, true);return $data;}

第二步:跳转到登录页面,登录完成后,在登录接口调用bindOpenId()方法,给用户绑定openid

 public function bindOpenId($phone='',$openid=''){$model = new UserModel();$userInfo = $model->where('phone', $phone)->find();//这个不需要判断,因为已经登录成功,手机号肯定存在,加强判断if (empty($userInfo)) {return error('手机号不存在');}if(!$openid){$openid = Cache::get('wx_openid');}$model->where('phone', $phone)->update(['openid' => $openid]);return success([], '绑定成功');}

http://www.yayakq.cn/news/581714/

相关文章:

  • 开展网络营销的企业网站有哪些江苏城乡和住房建设厅网站
  • vps做网站做网站有几种语言
  • 网站维护发展wordpress添加原文链接
  • 做网站如何使用特殊字体163k地方门户网站系统
  • 新时代文明实践站模板wordpress文章末尾广告位
  • 电影院做羞羞的网站外包公司排行
  • 宝安网站建设深圳信科建设银行 杭州招聘网站
  • 视觉营销网站建设规划分析简单的wordpress主题
  • 网站版面布局设计的原则网站开发与设计多少钱一个网站
  • 网站建设合同doc陕西专业网站建设公司
  • rp做网站网页视频下载到本地
  • 建设部网站官网做网站要买什么类型云空间
  • 中小学生做的网站中国石化工程建设有限公司官网
  • 建设企业网站制作公司百度seo查询系统
  • 浙江电信关于网站备案信息核实的公告网站如何留住用户
  • 自己做自己的私人网站龙岩建网站
  • 网站 易用性原则核酸结果查询
  • 设计工作网站搜索优化指的是什么
  • 虚拟主机上的网站上传方式wordpress响应时间长
  • wordpress 百度优化 插件wordpress 基础seo建站
  • 会网站建设如何找工作我的主页设计
  • ps网站首页设计图制作教程广东省做农业网站销售的公司
  • 未来做哪个网站致富app设计网站模板
  • 东莞网网站公司简介杭州logo设计公司哪家好
  • 松岗网站建设微信小程序 做网站
  • 网站用户体验评价方案在电脑上怎么做网站
  • 怎样做google网站合肥建设集团信息网站
  • 互联网站建设 天津深圳网站建设怎样快速
  • 网站设置字体样式乐山做美食推荐的网站
  • 网站400惠州网站建设方案外包