前端
浏览的当前页面需要用户注册,则跳转到注册界面
onLoad: function (options) {
var that = this
if (getApp().globalData.userSign == 2) {//判断用户是否注册
//跳转到注册界面
wx.redirectTo({
url: '../register/register',
})
}else if (getApp().globalData.userSign == 1) {
//用户已经登录,显示页面
}
}
注册界面
register.js
// register.js
var API_URL = "https://IP/wechat/insertUser.php";
var _app = getApp();
var util = require("../../utils/util.js");
Page({
/**
* 页面的初始数据
*/
data: {
registBtnTxt: "注册",
registBtnBgBgColor: "#318EE2",
getSmsCodeBtnTxt: "获取验证码",
getSmsCodeBtnColor: "#318EE2",
// getSmsCodeBtnTime:60,
btnLoading: false,
registDisabled: false,
smsCodeDisabled: false,
inputUserName: '',
inputPassword: '',
phoneNum: ''
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
formSubmit: function (e) {
var param = e.detail.value;
this.mysubmit(param);
},
mysubmit: function (param) {
var flag = this.checkUserName(param.username) && this.checkName(param) && this.checkSmsCode(param)
var that = this;
if (flag) {
var nickname = getApp().globalData.userInfo.nickName;
var gender = getApp().globalData.userInfo.gender;
var province = getApp().globalData.userInfo.province;
var phone = param.username.trim();
var realname = param.name.trim();
//提交服务器
wx.login({
success: function (res) {
if (res.code) {
var code = res.code;
wx.request({
url: API_URL,
data: {
nickname: nickname,
gender: gender,
province: province,
phone: phone,
realname: realname,
js_code: code,
},
method: 'GET',
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function (res) {
// success
that.setregistData1();
console.log("JSON:" + res.data);
setTimeout(function () {
wx.showToast({
title: res.data.msg+'',
icon: res.data.result == 1?'success':'warn',
duration: 1500
});
that.setregistData2();
if (res.data.result == 1){
getApp().globalData.userSign = 1;
}
wx.navigateBack({
})
//that.redirectTo(param);
}, 2000);
},
fail: function () {
that.setregistData1();
setTimeout(function () {
wx.showToast({
title: '失败',
icon: 'warn',
duration: 1500
});
that.setregistData2()
},2000);
},
complete: function () {
// complete
}
})
}
}
})
}
},
getPhoneNum: function (e) {
var value = e.detail.value;
this.setData({
phoneNum: value
});
},
setregistData1: function () {
this.setData({
registBtnTxt: "注册中",
registDisabled: !this.data.registDisabled,
registBtnBgBgColor: "#999",
btnLoading: !this.data.btnLoading
});
},
setregistData2: function () {
this.setData({
registBtnTxt: "注册",
registDisabled: !this.data.registDisabled,
registBtnBgBgColor: "#318EE2",
btnLoading: !this.data.btnLoading
});
},
checkUserName: function (param) {
var phone = util.regexConfig().phone;
var inputUserName = param.trim();
if (phone.test(inputUserName)) {
return true;
} else {
wx.showModal({
title: '提示',
showCancel: false,
content: '请输入正确的手机号码'
});
return false;
}
},
checkName: function (param) {
var userName = param.username.trim();
var name = param.name.trim();
if (name.length <= 0) {
wx.showModal({
title: '提示',
showCancel: false,
content: '请输入姓名'
});
return false;
} else {
return true;
}
},
getSmsCode: function () {
var phoneNum = this.data.phoneNum;
var that = this;
var count = 60;
if (this.checkUserName(phoneNum)) {
var si = setInterval(function () {
if (count > 0) {
count--;
that.setData({
getSmsCodeBtnTxt: count + ' s',
getSmsCodeBtnColor: "#999",
smsCodeDisabled: true
});
} else {
that.setData({
getSmsCodeBtnTxt: "获取验证码",
getSmsCodeBtnColor: "#318EE2",
smsCodeDisabled: false
});
count = 60;
clearInterval(si);
}
}, 1000);
}
},
checkSmsCode: function (param) {
var smsCode = param.smsCode.trim();
var tempSmsCode = '000000';//演示效果临时变量,正式开发需要通过wx.request获取
if (smsCode != tempSmsCode) {
wx.showModal({
title: '提示',
showCancel: false,
content: '请输入正确的短信验证码'
});
return false;
} else {
return true;
}
},
redirectTo: function (param) {
//需要将param转换为字符串
param = JSON.stringify(param);
wx.redirectTo({
url: '../main/index?param=' + param//参数只能是字符串形式,不能为json对象
})
}
})
register.json
{
"navigationBarBackgroundColor": "#318EE2",
"navigationBarTitleText": "注册",
"navigationBarTextStyle": "white",
"backgroundColor": "#fff",
"backgroundTextStyle": "light"
}
register.wxml
<!--register.wxml-->
<view class="content">
<form bindsubmit="formSubmit">
<view class="input-area">
<input id="username" name="username" maxlength='11' type="text" placeholder="手机号" bindchange="getPhoneNum"/>
<view class="smsCode">
<input id="smsCode" name="smsCode" maxlength='6' type="text" placeholder="测试验证码 000000" />
<button bindtap = "getSmsCode" disabled="{{smsCodeDisabled}}" style="background-color:{{getSmsCodeBtnColor}}" class="getSmsCodeBtn">{{getSmsCodeBtnTxt}}</button>
</view>
<input id="name" name="name" maxlength='20' type="text" placeholder="姓名" />
</view>
<view class="btn-area">
<button disabled="{{registDisabled}}" style="background-color:{{registBtnBgBgColor}}" formType="submit" loading="{{btnLoading}}"> {{registBtnTxt}} </button>
</view>
</form>
</view>
register.wxss
/* register.wxss */
/*.myprogress{margin:5px 0}*/
.content{text-align: center}
.logo{margin-top: 100rpx;margin-bottom: 120rpx}
.logo image{width:400rpx;height: 60rpx}
.input-area{
background-color: #fff;
text-align: left;
padding-left: 10%;
border-bottom:1px solid #ddd;
border-top:1px solid #ddd
}
.input-area input{height:100rpx;line-height: 100rpx;}
#username{border-bottom:1px solid #ddd}
.btn-area{width: 80%;margin: 0 auto}
.btn-area button{
/*background-color: #ff9900;*/
margin-top: 40rpx;
color: #fff
}
.txt-area{
margin-top: 30rpx;
display: flex;
justify-content:space-between;
font-size: 30rpx
}
.forgot-password{color: #888}
.register{color:#ff9900}
.forgot-password:active,.register:active{opacity: 0.7}
.smsCode{display: flex;justify-content:space-between;border-bottom: 1px solid #ddd;padding-right: 10%}
.smsCode input{width: 336rpx;}
.smsCode .getSmsCodeBtn{font-size: 30rpx; color:#fff;width:216rpx;box-sizing: border-box; height: 80rpx;line-height: 80rpx;margin-top: 10rpx;margin-right: 0}
utils.js
function formatTime(date) {
var year = date.getFullYear()
var month = date.getMonth() + 1
var day = date.getDate()
var hour = date.getHours()
var minute = date.getMinutes()
var second = date.getSeconds()
return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
function formatNumber(n) {
n = n.toString()
return n[1] ? n : '0' + n
}
function regexConfig() {
var reg = {
email: /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/,
phone: /^1(3|4|5|7|8)\d{9}$/
}
return reg;
}
module.exports = {
formatTime: formatTime,
regexConfig: regexConfig,
}
后端
<?php
require_once 'config.php';
header('Content-type: application/json; charset=UTF-8');
$APPID="wx---------------";
$SECRET="c78b---------------------";
$JSCODE="";
if(isset($_GET['js_code'])&&isset($_GET['nickname'])&&isset($_GET['gender'])
&&isset($_GET['province'])&&isset($_GET['phone'])&&isset($_GET['realname'])){
$JSCODE=$_GET['js_code'];
$NICKNAME=$_GET['nickname'];
$GENDER=$_GET['gender'];
$PROVINCE=$_GET['province'];
$PHONE=$_GET['phone'];
$REALNAME=$_GET['realname'];
$url="https://api.weixin.qq.com/sns/jscode2session?appid=".$APPID
."&secret=".$SECRET."&js_code=".$JSCODE."&grant_type=authorization_code";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HEADER, 0);
$data = curl_exec($curl);
$array=json_decode($data,true);
curl_close($curl);
$openid=isset($array['openid'])?$array['openid']:$array['errcode'];
//openid不可用
if($openid=="40029"){
$response["result"] = 0;
$response["msg"] = "invalid code";
echo json_encode($response);
}else{
$sqli="select * from users where openid='$openid'";
$resulti = mysqli_query($conn,$sqli);
$num = mysqli_num_rows($resulti);
//用户不存在则插入用户信息
if (!$num){
$sql="INSERT INTO users(nickname, gender, province, phone, realname,openid) VALUES('$NICKNAME', '$GENDER','$PROVINCE','$PHONE','$REALNAME','$openid')";
$result = mysqli_query($conn,$sql);
if ($result){
$response["result"] = 1;
$response["msg"] = "success";
echo json_encode($response);
}
else{
$response["result"] = 2;
$response["msg"] = "fail";
echo json_encode($response);
}
}else{
$response["result"] = 3;
$response["msg"] = "user exist";
echo json_encode($response);
}
}
}
?>