小程序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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 测试从零开始-No.6-测试用例设计方法(等价类+边界值)「建议收藏」

    测试从零开始-No.6-测试用例设计方法(等价类+边界值)「建议收藏」问题:有时候用selenium操作浏览器,打开多个页面后,在不用的时候,需要关掉,切换页面需要切换句柄,关掉页面后,也需要重新切换句柄,否则页面接着操作元素会出问题解决方法:

    2022年8月31日
    8
  • ATA考试注意事项「建议收藏」

    ATA考试注意事项「建议收藏」一、考试前将所有计算机除掉还原卡及还原软件。二、officeXp安装要用完全安装。三、服务器端尽量不要刷新所有客户端否则引起考试管理系统死机。四、拍照功能无法使用,可重新启动考试管理系统。五、服务器端无法扫描到客户端,除了服务器与客户端必须在同一网段内,可看一下客户端是否启动llistening    …

    2022年7月13日
    25
  • 非平稳信号的频谱分析方法—(短时傅立叶变换)

    非平稳信号的频谱分析方法—(短时傅立叶变换)非平稳信号又称时变信号。对这一类信号,其一阶、二阶统计量和功率谱的估计显然不能简单的使用平稳信号的估计方法,必须考虑它们的时变因素。

    2025年6月10日
    5
  • servlet中使用db4o

    servlet中使用db4o   在web的工程如果想使用db4o,是不能直接使用的,如果想使用的就得做一些初始化的工作,以便在servlet中使用,具体可以看下面的两个网页有详细的介绍:   http://java.dzone.com/articles/db4o-java http://community.versant.com/documentation/reference/db4o-8.1/java/re…

    2022年7月21日
    16
  • Integer与int的种种比较你知道多少?[通俗易懂]

    Integer与int的种种比较你知道多少?[通俗易懂]如果面试官问Integer与int的区别:估计大多数人只会说道两点,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null。但是如果面试官再问一下Integer i = 1;int ii = 1; i==ii为true还是为false?估计就有一部分人答不出来了,如果再问一下其他的,估计更多的人会头脑一片混乱。所以我对它们进行了总结,希望对大家有帮助 packa…

    2022年6月13日
    31
  • pycharm怎么关闭提示_嵌入自动补全

    pycharm怎么关闭提示_嵌入自动补全Pycharm是一款非常好用的Python的IDE。但就是因为它太好用了,所以对于Python新手来说,反而会导致脱离了代码提示功能,就完全不记得了函数名,大小写等,这对于新手来说是不太利于成长的。但是有一说一,Pycharm本身还是非常好用的,而且用习惯了,因此我一直想能够在学习的时候把Pycharm的代码提示功能关闭,工作的时候再打开,找了很久终于找到了T_T。当没有关闭代码提示的时候,…

    2022年8月29日
    4

发表回复

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

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