微信小程序搭接PHP

在网页放置微信小程序码,通过扫码在微信小程序端完成注册,同时需要获取微信用户的标识,用来拒绝已经注册过的用户,该怎么实现?
小程序端提交后将数据上传到MySQL,网页需要有提示样式,可以用什么办法?

首先,这个扫码进入小程序后,应该是显示一个直接授权获取用户openid的功能,然后读取数据库判断openid是否存在,存在则读取用户信息将信息发送给服务器端php application全局保存。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
  • 建议你看下这篇博客👉 :微信小程序登录php实现
  • 除此之外, 这篇博客: 微信小程序获取获取用户微信运动数据中的 接下来是PHP代码块 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • <?php
    namespace App\Http\Controllers\WeRun;
    use App\Http\Controllers\Controller as BaseController;
    use App\Http\Controllers\PHP\WXBizDataCrypt;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Redis;
    
    class RunController extends BaseController
    {
        protected $crontab;
        protected $user;
        protected $appid="wxa2d68e****32ec56"; //小程序Appid
        protected $appsecret="cc3e33e924677********fb168813426"; //小程序秘钥
        public function __construct()
        {
        }
        public function onlogin(Request $request){
            $code=$request->all('code');
            if (!empty($code)){
                $sessionKey=$this->GetSession("wxa2d68e****32ec56", "cc3e33e924677********fb168813426",$code['code']);
                $arr=json_decode($sessionKey,true);
                if (!empty($sessionKey))
                {
                	//三种方法
                    //1.
                    //$_SESSION[$code['code']]=$arr['session_key'];
                    //2.
                    //session()->put($code['code'],$arr['session_key']);
                    //$sess=session()->get($code['code']);
                    //3.
                    Redis::setex('code:'.$code['code'],3600,$arr['session_key']);
                    $user=Redis::get('code:'.$code['code']);
                    $data=[
                        'msg'=>'登录成功',
                        'info'=>$user
                    ];
                    return json_encode($data);
                }
            }
        }
        public function GetSession($appid,$appsecret,$code){
            $url= "https://api.weixin.qq.com/sns/jscode2session?appid=".$appid."&secret=".$appsecret."&js_code=".$code."&grant_type=authorization_code";
            $arr = $this->http_curl($url);
            if (!empty($arr))
            {
                return json_encode($arr);
            }
            return null;
        }
        protected function http_curl($url, $arr = '', $type = 'get', $res = 'json')
        {
            $ch = curl_init();
            //设置curl的参数
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            if ($type == 'post') {
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_POSTFIELDS, $arr);
            }
            //采集
            $output = curl_exec($ch);
            if ($res == 'json') {
                if ($err = curl_errno($ch)) {
                    //要在关闭之前获得curl_errno
                    curl_close($ch);
                    //请求失败,返回错误信息
                    return $err;
                } else {
                    //请求成功
                    return json_decode($output, true);
                }
            }
        }
    
        /**
         * @param Request $request
         * @return string
         * 微信获取加密的用户步数
         */
        public function Decrypt(Request $request){
    
            $rqt = $request->all();
            $appid="wxa2d68ed24d32ec56";
            $sessionKey = Redis::get('code:'.$rqt["code"]); //取出OnLogin的sessionKey
            $rawData = $this->AES_decrypt($appid,$rqt['encryptedData'], $sessionKey, $rqt['iv']);
            if (!empty($rawData)){
                return json_encode($rawData);
            }
            return json_encode("解密失败");
        }
    
        /**
         * @param $appid
         * @param $encryptedData
         * @param $sessionKey
         * @param $iv
         * @return string
         * 解密算法
         */
        public function AES_decrypt($appid,$encryptedData,$sessionKey,$iv){
            $datacrypt=new WXBizDataCrypt($appid,$sessionKey);
            $errCode = $datacrypt->decryptData($encryptedData, $iv, $data );
            if ($errCode == 0) {
                $arr_s=json_decode($data,true);
                $arr=$arr_s['stepInfoList'];
                $array=[];
                if($arr){
                    foreach ($arr as $k=>$v){
                        $array[date("Y-m-d H:i:s",$v['timestamp'])]=$v['step'];
                    }
                }
                return $array;
            } else {
                return json_encode($errCode);
            }
    
        }
    }
    //引入一个官方的PHP语言解密代码(里面有demo。看了就懂)
    //https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html
    

    在快写完的时候,PHP报解密的类找不到,但是我的命名空间没有问题,解决方法: composer dump-autoload