PHP实现微信小程序获取用户手机号并存入数据库

本文介绍如何使用PHP与微信小程序配合,通过用户授权获取其手机号,并将号码存储到数据库中。文中提供了相应的JS代码和PHP代码示例,强调了当前获取手机号需用户主动点击授权。注意,该教程可能因更新而有所变动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PS:截止到目前为止,小程序通过获取session_key与encryptedData与iv进行解密获取手机号的方法已经不行了,只能通过点击按钮来实现获取微信用户的手机号,本文仅以PHP为例
JS代码:

getPhoneNumber(e){
     var another = this
    console.log(e.detail.code)
    this.setData({
      'phoneCode':e.detail.code
    })
    var openid = this.data.openid
    console.log(openid)
    wx.request({
      url: 'XXXXXXXXXXX',//此处填写你服务器PHP文件的URL地址
      method:'POST',
      header:{
        'content-type':'application/x-www-form-urlencoded'
      },
      data:{
        'openid':this.data.openid,//此处openid为上一篇session_key解密时获取
        'phoneCode':this.data.phoneCode
      },
      success(res){
         console.log(res)
        another.setData({
          'phoneNumber':res.data.phoneNumber
        })
        console.log(another.data.phoneNumber)
      },      
    })
  }

PHP代码:

<?php
$appid = 'wx9c2877c657b56ed9';
$secret = '14999649ca329e1ef9cd43f77c072069';
//appid与secret在微信公众平台即可获取
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $appid . '&secret=' . $secret;
$getToken = curl_init();
curl_setopt($getToken, CURLOPT_URL, $url);
curl_setopt($getToken, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($getToken, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($getToken, CURLOPT_HEADER, 0);
curl_setopt($getToken, CURLOPT_RETURNTRANSFER, 1);//此处若设置为0则为直接输出,设置为1则为将返回结果赋值给变量
curl_setopt($getToken, CURLOPT_CONNECTTIMEOUT, 10);
$resultData = curl_exec($getToken);
//echo $resultData;
$disposeData = json_decode($resultData);//此处将返回的结果转化为对象,若在后方加上true则将返回的数据转化为数组
$access_token = $disposeData->access_token;//此处选用将结果转化为对象,从对象中取值赋值给相关变量
//echo $access_token;
/**
 * 分割线----------------------------------------------
 * 上方代码为通过appid与secret获取access_token,即公众号小程序调用接口唯一凭证
 */
$openid = $_POST['openid'];
//echo $openid;
$phoneCode = $_POST['phoneCode'];//从小程序端传送过来的code是获取用户手机号所需要的参数之一
$code = array('code' => $phoneCode);//将从小程序端获取的数据转换为数组格式
$finalCode = json_encode($code);
$numberUrl = 'https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=' . $access_token;
$getNumber = curl_init();
curl_setopt($getNumber, CURLOPT_URL, $numberUrl);
curl_setopt($getNumber, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($getNumber, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($getNumber, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($getNumber, CURLOPT_POST, 1);
curl_setopt($getNumber, CURLOPT_HEADER, 0);
curl_setopt($getNumber, CURLOPT_POSTFIELDS, $finalCode);
curl_setopt($getNumber, CURLOPT_CONNECTTIMEOUT, 10);
$resultData = curl_exec($getNumber);
curl_close($getNumber);
$disposeData = json_decode($resultData,true);
$phoneNumber = $disposeData['phone_info']['phoneNumber'];
$number = array('phoneNumber' => $phoneNumber);
$number = json_encode($number);
echo $number;
$dataHost = '127.0.0.1:3306';
$dataName = 'root';
$dataPass = 'root';
$dataBase = 'testin';
$connect = new mysqli($dataHost, $dataName, $dataPass, $dataBase);
$selectSQL = 'select * from in_database where phoneNumber = "'.$phoneNumber.'"';
$selectOpenid = 'select * from in_database where openid = "'.$openid.'"';
$newSql = 'update in_database set phoneNumber = "'.$phoneNumber.'" where openid = "'.$openid.'";';
/**
 * 手机号插入数据库流程:
 * 1.数据库是否成功链接,若成功连接进行下一步,若失败则抛出错误
 * 2.查询该用户的openid是否存在与数据库中,若存在则进行下一步,若不存在则关闭数据库连接
 * 3.查询数据库内是否存在这个手机号,若存在则不再插入,关闭数据库连接,如不存在则进入下一步
 * 4.将该手机号配合openid插入数据库中,若成功则关闭连接,若失败则抛出错误
 * 注:手机号绑定用户的openid的流程是:必须先授权登录再绑定手机号
 */
if(!($connect -> connect_error)){
    $resultOpenid = $connect -> query($selectOpenid);
    $openidNum = $resultOpenid -> num_rows;
    if($openidNum == 1){
        $resultPhone = $connect -> query($selectSQL);
        $phoneResult = $resultPhone -> num_rows;
        if($phoneResult == 0){
            $resultFinal = $connect -> query($newSql);
            echo $resultFinal;
            if($resultFinal == 1){
                echo '手机号绑定成功';
            }else{
                echo '手机号绑定失败';
            }
        }else{
            echo '该手机号已经绑定过了,不需要再次绑定';
        }
    }else{
        echo '先授权登陆之后再绑定手机号';
    }
    $connect -> close();
}else{
    echo '连接数据库失败';
}
$connect -> close();

以上就是使用PHP配合小程序前端JS获取用户的手机号并存入数据库

该文章由CSDN用户:缱绻淡蓝海原创,因存在部分纰漏,因此文章会不定时进行更新
原文链接: https://blog.csdn.net/DLH_C/article/details/125450238

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值