微信小程序——登录并保存用户信息到数据库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_17497931/article/details/86762896

效果图(登录前后):

登录后保存到数据库的数据:

开始代码部分

首选我们在index.wxml中添加用来显示登录后显示头像和昵称的标签,增加一个登录按钮,并绑定“wxLogin”事件:

<image src="{{avataUrl}}"></image>
<text>{{nick}}</text>
<button bindtap="wxLogin">登录</button>

index.js中增加以下代码:

Page({

    /**
     * 页面的初始数据
     */
    data: {

},
    wxLogin: function(e) {
        var that = this;
        wx.login({
            success: function(res) {
                var code = res.code; //发送给服务器的code 
                wx.getUserInfo({
                    success: function(res) {
                        var userNick = res.userInfo.nickName; //用户昵称 
                        var avataUrl = res.userInfo.avatarUrl; //用户头像地址 
                        var gender = res.userInfo.gender; //用户性别
                        console.log(avataUrl),
                        that.setData({
                            nick: userNick,
                            avataUrl: avataUrl
                        }) if (code) {
                            wx.request({
                                url: 'http://你的域名/wxLogin.php',
                                //服务器的地址,现在微信小程序只支持https请求,所以调试的时候请勾选不校监安全域名
                                data: {
                                    code: code,
                                    nick: userNick,
                                    avaurl: avataUrl,
                                    sex: gender,
                                },
                                header: {
                                    'content-type': 'application/json'
                                },
                                success: function(res) {
                                    console.log(res.data);
                                    wx.setStorageSync('nick', res.data.nick); //将获取信息写入本地缓存 
                                    wx.setStorageSync('openid', res.data.openid);
                                    wx.setStorageSync('imgUrl', res.data.imgUrl);
                                    wx.setStorageSync('sex', res.data.sex);
                                }
                            })
                        } else {
                            console.log("获取用户登录态失败!");
                        }
                    }
                })
            },
            fail: function(error) {
                console.log('login failed ' + error);
            }
        })
    }
})

下面使我们的服务端,wxLogin.php,注意修改代码里的数据库地址、数据库账户和密码,以及数据库名称、表名:

<?php
text();
function text() {
    $code = $_GET['code']; //小程序传来的code值
    $nick = $_GET['nick']; //小程序传来的用户昵称
    $imgUrl = $_GET['avaurl']; //小程序传来的用户头像地址
    $sex = $_GET['sex']; //小程序传来的用户性别
    $url = 'https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=APPSECRET&js_code=' . $code . '&grant_type=authorization_code'; //Appid为开发者appid.appSecret为开发者的appsecret,都可以从微信公众平台获取;
    $info = file_get_contents($url); //发送HTTPs请求并获取返回的数据,推荐使用curl
    $json = json_decode($info); //对json数据解码
    $arr = get_object_vars($json);
    $openid = $arr['openid'];
    $session_key = $arr['session_key'];
    $con = mysqli_connect('数据库地址', '数据库账号', '数据库密码'); //连接数据库
    if ($con) {
        if (mysqli_select_db($con, '数据库名称')) {
            $sql1 = "select * from 表名 where openid = '$openid'";
            $result = mysqli_query($con, $sql1);
            $result = mysqli_fetch_assoc($result);
            if ($result != null) { //如果数据库中存在此用户的信息,则不需要重新获取
                $result = json_encode($result);
                echo $result;
            } else { //没有则将数据存入数据库
                if ($sex == '0') {
                    $sex = 'none';
                } else {
                    $sex = '1' ? 'man' : 'women';
                }
                $sql = "insert into weixin(nick, openid, session_key, imgUrl, sex) values ('$nick','$openid','$session_key','$imgUrl','$sex')";
                if (mysqli_query($con, $sql)) {
                    $arr['nick'] = $nick;
                    $arr['imgUrl'] = $imgUrl;
                    $arr['sex'] = $sex;
                    $arr = json_encode($arr);
                    echo $arr;
                } else {
                    die('failed' . mysqli_error($con));
                }
            }
        }
    } else {
        die(mysqli_error());
    }
}
?>

下面是我们的数据库:

展开阅读全文

没有更多推荐了,返回首页