小程序 登录

微信登录后台

 public function login()
    {
        //接收参数
        $params =request()->param();
        //获取openID
        $url=sprintf(config('wx.url'),config('wx.AppID'),config('wx.AppSecret'),$params['code']);
        $data=getUrl($url);
        //查询openID是否存在
        $user=User::where('openid',$data['openid'])->find();
//        dd($user);
        //判断是否为空
        if (empty($user)){
            //添加
            User::create([
               'openid'=>$data['openid']
            ]);
        }
        //生成标识
        $key = "example_key";
        $payload =[
           'uid'=>$user['id']
        ];
        $jwt=JWT::encode($payload,$key,'HS256');
        return json(['code'=>200,'msg'=>'登录成功','token'=>$jwt]);
    }

封装

return[
    'AppID' =>'wxa1f79edf42175e02',//微信公众平台获取
    'AppSecret' => '5e7b75c47168b51084e4b9f63ec78495',
    'url' => 'https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code'
];

封装http请求

import {config} from '../config.js'
import Cache  from '../utils/Cache';
const tips={
  1: '抱歉,出现了一个未知错误',
}
class Http{
  request(params) {
    if (!params.method) {
      params.method = 'GET'
    }
    wx.request({
      url: config.api_base_url + params.url,
      method: params.method,
      data: params.data,
      header: {
         'token':Cache.get('token')
      },
      success: (res) => {
        let code = res.statusCode.toString()
        // 判断状态码是否以2开头
        if (code.startsWith('2')) {
          // 回调函数
          params.success(res.data)
        } else {
          let error_code = res.data.error_code
          this._show_error(error_code)
        }
      },
      fail: (err) => {
        this._show_error(1)
      }
    })
  }

  // 错误处理函数
  _show_error(error_code) {
    if (!error_code) {
      error_code = 1
    }
    wx.showToast({
      title: tips[error_code],
      icon: 'none',
      duration: 2000
    })
  }
}

export {
  Http
}

config封装

const config={
  api_base_url:"http://www.week.com/index.php/api/",
  appkey: ''

 
}

export {config}

封装缓存

// 缓存类
class Cache {

  // 构造方法 单位秒
  constructor({ expire = 3600 }) {
    // 成员属性  过期时间
    // 毫秒
    this.expire = new Date().getTime() + expire * 1000;
  }

  // 设置
  set(key, value) {
    let data = { expire: this.expire, value };
    // 设置缓存
    wx.setStorageSync(key, data);
  }

  // 永久
  forever(key, value) {
    let expire = new Date().getTime() + 9999999999 * 1000;
    let data = { expire, value };
    // 设置缓存
    wx.setStorageSync(key, data);
  }

  // 判断是否存在缓存
  has(key) {
    // 获取当前时间
    let time = new Date().getTime();
    // 缓存数据
    let data = wx.getStorageSync(key);
    if (data != '') {
      if (time > data.expire) {  // 缓存过期
        // 删除过期缓存
        wx.removeStorageSync(key);
        return false;
      }
      return true;
    }
    return false;
  }

  // 获取
  get(key) {
    if (this.has(key)) {
      return wx.getStorageSync(key).value;
    }
    return null;
  }
  
  // 删除
  del(key) {
    wx.removeStorageSync(key);
  }
}
// 导出 有效期1小时
export default new Cache({ expire: 3600 });

app.js


import {Http} from './utils/request.js'
import Cache from './utils/Cache.js';
let http = new Http()

App({
  onLaunch() {
    // 登录
    wx.login({
      success: res => {
        http.request({
          url: 'login',
          data:{
          code:res.code
          },
          success(ret){
          Cache.set('token',ret.token)
          }
        })
       

        // 发送 res.code 到后台换取 openId, sessionKey, unionId
      }
    })

  },
  globalData: {
    userInfo: null
  }
})
解决生产环境中遇到的大量计划任务维护难问题,所有计划任务可实现后台管理,
即时记录计划任务执行结束,执行失败的计划定时发送报警邮件通知,
后台维护的计划任务会在五分钟内生效,可定义计划任务的开始时间,结束时间,
执行间隔,执行次数,基于http协议的计划任务,大大提高计划任务的灵活性。


可以通过组播的方式进行集群间的共享,比如tomcat目前就具备这样的功能,
优点是web容器自身支持,
配置简单,适合小型网站
还可以利用NFS等一些共享存储来共享Session数据,
还可以利用Memcache来存储共享Session数据


getdate() 可取得日期时间信息
time() 函数可返回当前的  时间戳
mktime() 也可取得一个日期的 UNIX 时间戳



被static修饰的变量就是静态变量
静态变量,简单的说,就是一种在特定范围内一直存在的变量,
你可以把全局变量当作一种静态变量,它的值在代码运行期间一直存在。



双引号解释变量,单引号不解释变量
双引号解释转义字符,单引号不解释转义字符
单引号表示的是一个字符,双引号表示的是一个字符串
双引号能嵌套单引号,但单引号不能嵌套双引号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值