php现有用户表绑定微信用户表

lcy03220419 2019-06-27 11:54:36
现在数据库里有两个用户信息表,一个是用户原用邮箱注册的信息表,另一个是新开发的微信扫码登录所获取的openid,unionid等信息表。现在想绑定两张表,比如原数据表的id为1的会员扫码登录后他微信表里的wxid就自动变成1,请问大神这个功能应该怎么实现,该怎么绑定这个id和wxid?
...全文
363 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
oO小明.同学Oo 2019-06-28
  • 打赏
  • 举报
回复
引用 8 楼 lcy03220419 的回复:
[quote=引用 7 楼 oO小明.同学Oo 的回复:] [quote=引用 4 楼 lcy03220419 的回复:] [quote=引用 3 楼 oO小明.同学Oo 的回复:] 本来就是两个不同的个体,你只能让微信用户强制邮箱输入,不然就是邮箱用户强制扫码就行了
现在是让微信用户扫码后选择注册或者绑定已有账号,注册或者登录后相应的用户信息和微信用户信息会存储到相应的表里,但是不知道怎么让这两张表建立联系,达到让微信用户扫码绑定了之后下一次就直接扫码登录的结果。这是现在php写入微信数据的代码
public function wxLogin() {
    $wechatlogin = M('wechatlogin');//获取code
    $code = $this->_get('code');
      //echo $code;
    //根据code换取access_token
    $get_ac_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=xxx&secret=xxxf&code={$code}&grant_type=authorization_code";
    $res_data = file_get_contents($get_ac_url);
    $res_arr = json_decode($res_data, true);
    //echo'<pre>';
    //print_r($res_arr);
    //根据access_token获取用户信息
    $get_user_url = "https://api.weixin.qq.com/sns/userinfo?access_token={$res_arr['access_token']}&openid={$res_arr['openid']}";
    $user_data = file_get_contents($get_user_url);
    $res_arr1 = json_decode($user_data, true);
    //echo'<pre>';
    //print_r($res_arr1);
    $data['openid'] = $res_arr1['openid'];
      $data['nickname'] = $res_arr1['nickname'];
      $data['unionid'] = $res_arr1['unionid'];
      $data['headimgurl'] = $res_arr1['headimgurl'];
    //将用户信息存储到SESSION中
    session('user_data', $user_data);
    //获取用户ID之后,和微信信息入库进行绑定,构建入库数据
    $wx_user_info = json_decode(session('user_data'),true);
    //echo $wx_user_info;
   //echo'<pre>';
    //print_r($wx_user_info);
    $arr=array(
      "openid"=>$res_arr1['openid'],
      "nickname"=>$res_arr1['nickname'],
      "unionid"=>$res_arr1['unionid'],
      "headimgurl"=>$res_arr1['headimgurl'],
      "id" =>$wxbdid,
    );
  
     // $data['openid']= '1122';
     // $data['nickname']= $wx_user_info['nickname'];
     // $data['unionid']= $wx_user_info['unionid'];
      //$data['headimgurl']= $$wx_user_info['headimgurl'];
     // $data['id'] = $data['id'];
    
     //$wechatlogin->data($data);   
     $wechatlogin->data($arr)->add();
     
    //提醒用户注册或者绑定已有账号
    //保存用户信息
    //初始化用户登录状态
    $this->display('wechatLogin');
[/quote] 微信表里面eid对应的是邮箱账号的id,在绑定邮箱的时候就绑定两个表的关联,下次扫码登陆就可以连接两个表[/quote] 但是现在不知道怎么实现关联这两个表,下面这个是相似的room_id 和goods_id的关联,但是目前照葫芦画不出来瓢,还是没有实现关联两个表
public function add_four() {
		$Room = M('Room');
		$User_info = M('User_info');
		$Sxtjs = M('Sxtjs');
		$GoodsImages = M('GoodsImages');

		//会员信息
		$hyid=session("hyid");
		$jiben = $User_info->where("id = $hyid")->find();

		$rid=$this->_get('room_id');
		$whrs['hyid']=$hyid;
		$whrs['room_id']=$rid;
		$upd=$Room->where($whrs)->find();
		$gid=$upd['room_id'];
		$this->assign('gid',$gid);

		$image_list=$GoodsImages->where(array('goods_id'=>$upd['room_id']))->order('id asc')->select();
		$this->assign('image_list',$image_list);

		if($upd){
			if($hyid!=""){
				if(IS_POST){
					$goods_images=$this->_post('planfile');
					$goodsImagesArr = M('GoodsImages')->where("goods_id = $gid")->getField('id,image_url'); // 查出所有已经存在的图片
					 // 删除图片
					 foreach($goodsImagesArr as $key => $val)
					 {
						 if(!in_array($val, $goods_images))
							 M('GoodsImages')->where("id = {$key}")->delete(); // 删除所有状态为0的用户数据
					 }
					 // 添加图片
					foreach($goods_images as $key => $val){
						if($val == null)  continue;
						if(!in_array($val, $goodsImagesArr))
						 {
								$data = array(
									'goods_id' => $upd['room_id'],
									'image_url' => $val,
								);
								M("GoodsImages")->data($data)->add(); // 实例化User对象
						 }

					}

					if($upd['is_fabu']==0){
							redirect(U('Fy/rom_info',array('room_id'=>$rid)));
							exit;
						}else{
							redirect(U('Fy/rom_info',array('room_id'=>$rid)));
							exit;
						}
				}
			}else{
				$this->error('请先登录',U('Index/index'));
			}
		}else{
			redirect(U('Fy/add_one'));
			exit;
		}
		$this->assign('jiben',$jiben);
		$this->assign('tj_list',$tj_list);
    $this->display();
    }
[/quote] 微信用户表有个eid(关联了邮箱用户表的id),查找微信用户的邮箱用户表信息时,M("邮箱用户表")->where(["id"=>$eid])->find()
lcy03220419 2019-06-28
  • 打赏
  • 举报
回复
引用 7 楼 oO小明.同学Oo 的回复:
[quote=引用 4 楼 lcy03220419 的回复:] [quote=引用 3 楼 oO小明.同学Oo 的回复:] 本来就是两个不同的个体,你只能让微信用户强制邮箱输入,不然就是邮箱用户强制扫码就行了
现在是让微信用户扫码后选择注册或者绑定已有账号,注册或者登录后相应的用户信息和微信用户信息会存储到相应的表里,但是不知道怎么让这两张表建立联系,达到让微信用户扫码绑定了之后下一次就直接扫码登录的结果。这是现在php写入微信数据的代码
public function wxLogin() {
    $wechatlogin = M('wechatlogin');//获取code
    $code = $this->_get('code');
      //echo $code;
    //根据code换取access_token
    $get_ac_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=xxx&secret=xxxf&code={$code}&grant_type=authorization_code";
    $res_data = file_get_contents($get_ac_url);
    $res_arr = json_decode($res_data, true);
    //echo'<pre>';
    //print_r($res_arr);
    //根据access_token获取用户信息
    $get_user_url = "https://api.weixin.qq.com/sns/userinfo?access_token={$res_arr['access_token']}&openid={$res_arr['openid']}";
    $user_data = file_get_contents($get_user_url);
    $res_arr1 = json_decode($user_data, true);
    //echo'<pre>';
    //print_r($res_arr1);
    $data['openid'] = $res_arr1['openid'];
      $data['nickname'] = $res_arr1['nickname'];
      $data['unionid'] = $res_arr1['unionid'];
      $data['headimgurl'] = $res_arr1['headimgurl'];
    //将用户信息存储到SESSION中
    session('user_data', $user_data);
    //获取用户ID之后,和微信信息入库进行绑定,构建入库数据
    $wx_user_info = json_decode(session('user_data'),true);
    //echo $wx_user_info;
   //echo'<pre>';
    //print_r($wx_user_info);
    $arr=array(
      "openid"=>$res_arr1['openid'],
      "nickname"=>$res_arr1['nickname'],
      "unionid"=>$res_arr1['unionid'],
      "headimgurl"=>$res_arr1['headimgurl'],
      "id" =>$wxbdid,
    );
  
     // $data['openid']= '1122';
     // $data['nickname']= $wx_user_info['nickname'];
     // $data['unionid']= $wx_user_info['unionid'];
      //$data['headimgurl']= $$wx_user_info['headimgurl'];
     // $data['id'] = $data['id'];
    
     //$wechatlogin->data($data);   
     $wechatlogin->data($arr)->add();
     
    //提醒用户注册或者绑定已有账号
    //保存用户信息
    //初始化用户登录状态
    $this->display('wechatLogin');
[/quote] 微信表里面eid对应的是邮箱账号的id,在绑定邮箱的时候就绑定两个表的关联,下次扫码登陆就可以连接两个表[/quote] 但是现在不知道怎么实现关联这两个表,下面这个是相似的room_id 和goods_id的关联,但是目前照葫芦画不出来瓢,还是没有实现关联两个表
public function add_four() {
		$Room = M('Room');
		$User_info = M('User_info');
		$Sxtjs = M('Sxtjs');
		$GoodsImages = M('GoodsImages');

		//会员信息
		$hyid=session("hyid");
		$jiben = $User_info->where("id = $hyid")->find();

		$rid=$this->_get('room_id');
		$whrs['hyid']=$hyid;
		$whrs['room_id']=$rid;
		$upd=$Room->where($whrs)->find();
		$gid=$upd['room_id'];
		$this->assign('gid',$gid);

		$image_list=$GoodsImages->where(array('goods_id'=>$upd['room_id']))->order('id asc')->select();
		$this->assign('image_list',$image_list);

		if($upd){
			if($hyid!=""){
				if(IS_POST){
					$goods_images=$this->_post('planfile');
					$goodsImagesArr = M('GoodsImages')->where("goods_id = $gid")->getField('id,image_url'); // 查出所有已经存在的图片
					 // 删除图片
					 foreach($goodsImagesArr as $key => $val)
					 {
						 if(!in_array($val, $goods_images))
							 M('GoodsImages')->where("id = {$key}")->delete(); // 删除所有状态为0的用户数据
					 }
					 // 添加图片
					foreach($goods_images as $key => $val){
						if($val == null)  continue;
						if(!in_array($val, $goodsImagesArr))
						 {
								$data = array(
									'goods_id' => $upd['room_id'],
									'image_url' => $val,
								);
								M("GoodsImages")->data($data)->add(); // 实例化User对象
						 }

					}

					if($upd['is_fabu']==0){
							redirect(U('Fy/rom_info',array('room_id'=>$rid)));
							exit;
						}else{
							redirect(U('Fy/rom_info',array('room_id'=>$rid)));
							exit;
						}
				}
			}else{
				$this->error('请先登录',U('Index/index'));
			}
		}else{
			redirect(U('Fy/add_one'));
			exit;
		}
		$this->assign('jiben',$jiben);
		$this->assign('tj_list',$tj_list);
    $this->display();
    }
oO小明.同学Oo 2019-06-28
  • 打赏
  • 举报
回复
引用 4 楼 lcy03220419 的回复:
[quote=引用 3 楼 oO小明.同学Oo 的回复:] 本来就是两个不同的个体,你只能让微信用户强制邮箱输入,不然就是邮箱用户强制扫码就行了
现在是让微信用户扫码后选择注册或者绑定已有账号,注册或者登录后相应的用户信息和微信用户信息会存储到相应的表里,但是不知道怎么让这两张表建立联系,达到让微信用户扫码绑定了之后下一次就直接扫码登录的结果。这是现在php写入微信数据的代码
public function wxLogin() {
    $wechatlogin = M('wechatlogin');//获取code
    $code = $this->_get('code');
      //echo $code;
    //根据code换取access_token
    $get_ac_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=xxx&secret=xxxf&code={$code}&grant_type=authorization_code";
    $res_data = file_get_contents($get_ac_url);
    $res_arr = json_decode($res_data, true);
    //echo'<pre>';
    //print_r($res_arr);
    //根据access_token获取用户信息
    $get_user_url = "https://api.weixin.qq.com/sns/userinfo?access_token={$res_arr['access_token']}&openid={$res_arr['openid']}";
    $user_data = file_get_contents($get_user_url);
    $res_arr1 = json_decode($user_data, true);
    //echo'<pre>';
    //print_r($res_arr1);
    $data['openid'] = $res_arr1['openid'];
      $data['nickname'] = $res_arr1['nickname'];
      $data['unionid'] = $res_arr1['unionid'];
      $data['headimgurl'] = $res_arr1['headimgurl'];
    //将用户信息存储到SESSION中
    session('user_data', $user_data);
    //获取用户ID之后,和微信信息入库进行绑定,构建入库数据
    $wx_user_info = json_decode(session('user_data'),true);
    //echo $wx_user_info;
   //echo'<pre>';
    //print_r($wx_user_info);
    $arr=array(
      "openid"=>$res_arr1['openid'],
      "nickname"=>$res_arr1['nickname'],
      "unionid"=>$res_arr1['unionid'],
      "headimgurl"=>$res_arr1['headimgurl'],
      "id" =>$wxbdid,
    );
  
     // $data['openid']= '1122';
     // $data['nickname']= $wx_user_info['nickname'];
     // $data['unionid']= $wx_user_info['unionid'];
      //$data['headimgurl']= $$wx_user_info['headimgurl'];
     // $data['id'] = $data['id'];
    
     //$wechatlogin->data($data);   
     $wechatlogin->data($arr)->add();
     
    //提醒用户注册或者绑定已有账号
    //保存用户信息
    //初始化用户登录状态
    $this->display('wechatLogin');
[/quote] 微信表里面eid对应的是邮箱账号的id,在绑定邮箱的时候就绑定两个表的关联,下次扫码登陆就可以连接两个表
lcy03220419 2019-06-28
  • 打赏
  • 举报
回复
引用 2 楼 蜗牛慢慢向上爬 的回复:
看下 生成带参数的二维码 https://developers.weixin.qq.com/doc/offiaccount/Account_Management/Generating_a_Parametric_QR_Code.html 把用户id当参数生成二维码
谢谢,但是我是微信开放平台做的网站应用,请问可以参考这个嘛?
lcy03220419 2019-06-28
  • 打赏
  • 举报
回复
引用 3 楼 oO小明.同学Oo 的回复:
本来就是两个不同的个体,你只能让微信用户强制邮箱输入,不然就是邮箱用户强制扫码就行了
现在是让微信用户扫码后选择注册或者绑定已有账号,注册或者登录后相应的用户信息和微信用户信息会存储到相应的表里,但是不知道怎么让这两张表建立联系,达到让微信用户扫码绑定了之后下一次就直接扫码登录的结果。这是现在php写入微信数据的代码
public function wxLogin() {
    $wechatlogin = M('wechatlogin');//获取code
    $code = $this->_get('code');
      //echo $code;
    //根据code换取access_token
    $get_ac_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=xxx&secret=xxxf&code={$code}&grant_type=authorization_code";
    $res_data = file_get_contents($get_ac_url);
    $res_arr = json_decode($res_data, true);
    //echo'<pre>';
    //print_r($res_arr);
    //根据access_token获取用户信息
    $get_user_url = "https://api.weixin.qq.com/sns/userinfo?access_token={$res_arr['access_token']}&openid={$res_arr['openid']}";
    $user_data = file_get_contents($get_user_url);
    $res_arr1 = json_decode($user_data, true);
    //echo'<pre>';
    //print_r($res_arr1);
    $data['openid'] = $res_arr1['openid'];
      $data['nickname'] = $res_arr1['nickname'];
      $data['unionid'] = $res_arr1['unionid'];
      $data['headimgurl'] = $res_arr1['headimgurl'];
    //将用户信息存储到SESSION中
    session('user_data', $user_data);
    //获取用户ID之后,和微信信息入库进行绑定,构建入库数据
    $wx_user_info = json_decode(session('user_data'),true);
    //echo $wx_user_info;
   //echo'<pre>';
    //print_r($wx_user_info);
    $arr=array(
      "openid"=>$res_arr1['openid'],
      "nickname"=>$res_arr1['nickname'],
      "unionid"=>$res_arr1['unionid'],
      "headimgurl"=>$res_arr1['headimgurl'],
      "id" =>$wxbdid,
    );
  
     // $data['openid']= '1122';
     // $data['nickname']= $wx_user_info['nickname'];
     // $data['unionid']= $wx_user_info['unionid'];
      //$data['headimgurl']= $$wx_user_info['headimgurl'];
     // $data['id'] = $data['id'];
    
     //$wechatlogin->data($data);   
     $wechatlogin->data($arr)->add();
     
    //提醒用户注册或者绑定已有账号
    //保存用户信息
    //初始化用户登录状态
    $this->display('wechatLogin');
oO小明.同学Oo 2019-06-27
  • 打赏
  • 举报
回复
本来就是两个不同的个体,你只能让微信用户强制邮箱输入,不然就是邮箱用户强制扫码就行了
  • 打赏
  • 举报
回复
看下 生成带参数的二维码 https://developers.weixin.qq.com/doc/offiaccount/Account_Management/Generating_a_Parametric_QR_Code.html 把用户id当参数生成二维码
kang#kang 2019-06-27
  • 打赏
  • 举报
回复
你用户扫码登陆后 有openid 也有用户的信息用户的id 登陆后你更改微信表的wxid就行了 大概的步骤 1、扫码登陆 2、登陆成功获得用户id、用户openid 3、根据用户openid 查询微信表用户是否存在 4、若用户存在则修改用的wxid为用户id 否则新增微信用户 wxid直接存储为用户id

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧