小程序php开发_php实现简单登录和注册功能

小程序php开发_php实现简单登录和注册功能微信小程序官方给了十分详细的登陆时序图,当然为了安全着想,应该加上签名加密。微信小程序端1).调用wx.login获取code。2).调用wx.getuserinfo获取签名所需的rawdata,signatrue,encryptdata。3).发起请求将获取的数据发送的后台。login:function(e){varthat=this;wx.login({success…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

微信小程序官方给了十分详细的登陆时序图,当然为了安全着想,应该加上签名加密。

8a9f51969f5171587d89e9d4da289349.png

微信小程序端

1).调用wx.login获取 code 。

2).调用wx.getuserinfo获取签名所需的 rawdata , signatrue , encryptdata 。

3).发起请求将获取的数据发送的后台。

login: function(e) {

var that = this;

wx.login({

success: function(res){

var code = res.code; //获取code

wx.getuserinfo({ //得到rawdata, signatrue, encryptdata

success: function(data){

var rawdata = data.rawdata;

var signature = data.signature;

var encrypteddata = data.encrypteddata;

var iv = data.iv;

wx.request({

url: ‘你自己的后台地址’,

data: {

“code” : code,

“rawdata” : rawdata,

“signature” : signature,

‘iv’ : iv,

‘encrypteddata’: encrypteddata

},

method: ‘get’,

success: function(info){

console.log(info);

}

})

}

})

},

})

}

服务端

需下载微信官方解密文件。 ——

1.解压后会出现不同语言的文件包,这里用的是php,将文件夹放到vendor目录下。

2.根据登陆凭证 code 获取 session_key 和 openid。

3.数据签名校验。

4.数据解密。

5.生成第三方3rd_session并返回微信小程序端。

/*

*登录(调用wx.login获取)

* @param $code string

* @param $rawdata string

* @param $signatrue string

* @param $encrypteddata string

* @param $iv string

* @return $code 成功码

* @return $session3rd 第三方3rd_session

* @return $data 用户数据

*/

public function login()

{

//开发者使用登陆凭证 code 获取 session_key 和 openid

$appid = ”;//自己配置

$appsecret = ”;//自己配置

$code = input(‘code’);

$url = “https://api.weixin.qq.com/sns/jscode2session?appid=” . $appid . “&secret=” . $appsecret . “&js_code=” . $code . “&grant_type=authorization_code”;

$arr = $this->vget($url); // 一个使用curl实现的get方法请求

$arr = json_decode($arr, true);

$openid = $arr[‘openid’];

$session_key = $arr[‘session_key’];

// 数据签名校验

$signature = input(‘signature’);

$rawdata = request::instance()->post(‘rawdata’);

$signature2 = sha1($rawdata . $session_key);

if ($signature != $signature2) {

return json([‘code’ => 500, ‘msg’ => ‘数据签名验证失败!’]);

}

vendor(“php.wxbizdatacrypt”); //加载解密文件,在官方有下载

$encrypteddata = input(‘encrypteddata’);

$iv = input(‘iv’);

$pc = new \wxbizdatacrypt($appid, $session_key);

$errcode = $pc->decryptdata($encrypteddata, $iv, $data); //其中$data包含用户的所有数据

$data = json_decode($data);

if ($errcode == 0) {

dump($data);

die;//打印解密所得的用户信息

} else {

echo $errcode;//打印失败信息

}

}

public function vget($url){

$info=curl_init();

curl_setopt($info,curlopt_returntransfer,true);

curl_setopt($info,curlopt_header,0);

curl_setopt($info,curlopt_nobody,0);

curl_setopt($info,curlopt_ssl_verifypeer, false);

curl_setopt($info,curlopt_ssl_verifyhost, false);

curl_setopt($info,curlopt_url,$url);

$output= curl_exec($info);

curl_close($info);

return $output;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192591.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 编写socket套接字的步骤_windows7任务栏组成部分

    编写socket套接字的步骤_windows7任务栏组成部分详细内容请见书Windows程序设计珍藏版1081页或请见文章:https://www.jianshu.com/p/066d99da7cbd

    2022年8月18日
    6
  • MSYS以及MinGW安装

    MSYS以及MinGW安装MSYS以及MinGW安装文章目录MSYS以及MinGW安装下载并安装MSYS安装基础运行库(glibc,cmake,make等)下载并安装MSYS下载传送门点击下载Windows64bit,双击安装选择安装目录安装完成!!!安装基础运行库(glibc,cmake,make等)$pacman-Syu$pacman-Su$pacman-S–neededbase-develmingw-w64-x86_64-toolchain基础运行库安装完成,现在可以编译Co

    2022年6月16日
    35
  • 测试技术提升分享_测试技术分享

    测试技术提升分享_测试技术分享在腾讯课堂上分享测试技术相关的课程也有一段时间了,同时在博客(http://blog.sina.com.cn/u/1760715297)和微信公众号上也分享了不少相关文档。现在已经有相当关注度,也有很多同学加入了我们的QQ群(867446822)积极地进行交流。但在交流过程中,也存在不少问题,有相当的同学不了解我们的课程,也不清楚如何学习,所以我写这篇文章,给大家做个指导:一,测…

    2025年11月25日
    6
  • VBS代码–很恶心的整人效果

    VBS代码–很恶心的整人效果—-我们会经常遇到一些无聊的文件,一旦我们打开它就会出现各种烦人的新窗口,今天来看的是VBS脚本—-一:VBS简介VBS是基于VisualBasic的脚本语言。VBS的全称是:MicrosoftVisualBasicScriptEditon。(微软公司可视化BASIC脚本版)。其语言类似VisualBasic(VB),VBS是微软的WSH脚本的一种,WSH是是Win

    2022年4月28日
    68
  • Java socket接收出现中文乱码[通俗易懂]

    Java socket接收出现中文乱码[通俗易懂]今天写Tcp,发现中文乱码的问题,百度了一下,发现这篇文章,开头两句话就解决了我的问题,读完受益匪浅啊,呵呵,收藏先。尊重版权:原文地址:http://hi.baidu.com/linjk03/blog/item/10023afad8303cd9b48f311a.htmlin=newBufferedReader(newInputStreamReader(socket.get

    2022年7月8日
    21
  • Go语言之append函数

    Go语言之append函数append函数的作用官方解释append函数是向slice里面追加一个或多个元素,然后返回一个和slice一样类型的slice,其签名为funcappend(slice[]T,elements…T)[]Tappend所做的是在切片尾添加元素并返回结果。结果需要返回因为,正如我们手写的Append,底层的数组可能更改。使用示例:x:=[]int{1,2

    2022年6月18日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号