第一步
<div id="login_container" style="border: 1px red solid"></div>
<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
<script type="text/javascript">
var obj = new WxLogin({
self_redirect:false,
id:"login_container",
appid: "wxd2846517367a2f30",
scope: "snsapi_login",
redirect_uri: "http://www.liminghulian.com/index.php/home/index/weixin",
state: "STATE",
style: "",
href: ""
});
// window.location.reload();
</script>
<br>
<br>
用户id<?php echo session('user_info')['id']?><br>
用户账号<?php echo session('user_info')['mobile']?>
<a href="{:U('Index/quit')}">退出</a>
<a href="https://open.weixin.qq.com/connect/qrconnect?appid=wxd2846517367a2f30&redirect_uri=http://www.liminghulian.com/index.php/home/index/weixin&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect">微信登录</a>
第二步
function weixin(){
//获取code
if(isset($_GET['code'])){
// echo $_GET['code'];
//第二步:通过code获取access_token
$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxd2846517367a2f30&secret=ee8b8a8e9059949c0a352578d59f86f0&code=".$_GET['code']."&grant_type=authorization_code";
$res=$this->https_request($url);
$res=json_decode($res,true);
//第三步:通过access_token调用接口
$url="https://api.weixin.qq.com/sns/userinfo?access_token=".$res['access_token']."&openid=".$res['openid']."&lang=zh_CN";
$info=$this->https_request($url);
$info=json_decode($info,true);
// $url='https://api.weixin.qq.com/sns/userinfo?access_token='.$arr['access_token'].'&openid='.$arr['openid'].'&lang=zh_CN';
//var_dump($info);
if(isset($info['errcode'])){
echo "<script>window.location.href='https://open.weixin.qq.com/connect/qrconnect?appid=wxd2846517367a2f30&redirect_uri=http://www.liminghulian.com/index.php/home/index/weixin&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect';</script>";
exit();
}
//将获取的数据传到ssion
session('weixin_info',$info);
//将头像移动到指定位置
$weixin = M("userweixin"); // 构建写入的数据数组
$user = M("user");
$coun=$weixin->where(array('w_openid'=>session('weixin_info')['openid']))->count();
if($coun>0){
$img=$this->https_request(session('weixin_info')['headimgurl']);
$img_url='./Public/Uploads/weixin/'.session('weixin_info')['openid'].'.jpg';
file_put_contents($img_url, $img);
$data=[
//'w_openid'=>session('weixin_info')['openid'],
'w_nickname'=>session('weixin_info')['nickname'],
'w_sex'=>session('weixin_info')['sex'],
'w_city'=>session('weixin_info')['city'],
'w_province'=>session('weixin_info')['province'],
'w_country'=>session('weixin_info')['country'],
'w_headimgurl'=>$img_url
//'w_ddate'=>rand(1000,9999)//测试
];
// 更新数据
$weixin->where(array('w_openid'=>session('weixin_info')['openid']))->save($data);//$lastInsId为最新插入数据的id
$wx_info=$weixin->where(array('w_openid'=>session('weixin_info')['openid']))->find();
if(empty($wx_info['user_id'])){
//未认证
$this->redirect("Index/renzheng");
exit();
}else{
//已经认证
//关联user表存用户id 登录状态
// $list = $user->where(array("lz_user.id"=>$wx_info['user_id']))->field('lz_user.mobile,lz_user.id')->join('lz_userweixin on lz_userweixin.user_id=lz_user.id')->find();
$list = $user->where(array("lz_user.id"=>$wx_info['user_id']))->field('mobile,id')->find();
session('user_info',$list);
//echo "<script> window.location.reload();</script>";
$this->redirect("Jiesuan/index");
exit();
}
}else{
$img=$this->https_request(session('weixin_info')['headimgurl']);
$img_url='./Public/Uploads/weixin/'.session('weixin_info')['openid'].'.jpg';
file_put_contents($img_url, $img);
$data=[
'w_openid'=>session('weixin_info')['openid'],
'w_nickname'=>session('weixin_info')['nickname'],
'w_sex'=>session('weixin_info')['sex'],
'w_city'=>session('weixin_info')['city'],
'w_province'=>session('weixin_info')['province'],
'w_country'=>session('weixin_info')['country'],
'w_headimgurl'=>$img_url,
'w_ddate'=>time()
];
// 写入数据
$weixin->add($data);//$lastInsId为最新插入数据的id
//未认证
$this->redirect("Index/renzheng");
exit();
}
}else{
//code码不存在
echo "<meta charset='utf-8' /><script>alert('code码不存在,请您从新扫描!');window.location.href='".U('Index/index')."';</script>";
exit();
}
}
function renzheng(){
//echo session('weixin_info')['headimgurl'];
$this->display('renzheng');
}
function reg(){
$type=I("type");
$user = M("user");
$weixin = M("userweixin"); // 构建写入的数据数组
$openid=session('weixin_info')['openid'];
if($type==1){
//已有账号 进行与微信绑定
//微信 opendid
$openid=session('weixin_info')['openid'];
//判断账号是否存在
$coun=$user->where(array('mobile'=>I("tel"),'password'=>I("password")))->count();
$user_info=$user->where(array('mobile'=>I("tel"),'password'=>I("password")))->find();
if($coun<=0){
$meg_arr = array(
"err"=>"2",
"msg" => "该用户不存在!" . date('Y-m-d H:i:s',time())
);
echo json_encode($meg_arr);
exit();
}else{
$data=[
'user_id'=>$user_info['id']//测试
];
// 更新数据
$weixin->where(array('w_openid'=>$openid))->save($data);//
//关联user表存用户id 登录状态
$list = $user->where(array("lz_user.id"=>$user_info['id']))->field('mobile,id')->find();
session('user_info',$list);
$meg_arr = array(
"err"=>"1",
"msg" => "成功!" . date('Y-m-d H:i:s',time())
);
echo json_encode($meg_arr);
exit();
}
}elseif($type==2){
//添加账号 进行与微信绑定
//微信 opendid
//防止手机号重复
$coun=$user->where(array('mobile'=>I("tel")))->count();
if($coun>0){
$meg_arr = array(
"err"=>"2",
"msg" => "手机号重复,!" . date('Y-m-d H:i:s',time())
);
echo json_encode($meg_arr);
exit();
}
//防止重复添加绑定
$coun=$weixin->where(array('w_openid'=>session('weixin_info')['openid']))->find();
if(!empty($coun['user_id'])){
$meg_arr = array(
"err"=>"2",
"msg" => "此微信号已经绑定手机号!" . date('Y-m-d H:i:s',time())
);
echo json_encode($meg_arr);
exit();
}else{
$data=[
'password'=> I("password"),
'mobile'=> I("tel")
];
$lastInsId =$user->add($data);
if(!empty($lastInsId)){
$data=[
'user_id'=>$lastInsId//测试
];
// 更新数据
$weixin->where(array('w_openid'=>$openid))->save($data);//
//关联user表存用户id 登录状态
$list = $user->where(array("lz_user.id"=>$lastInsId))->field('mobile,id')->find();
session('user_info',$list);
//返回
$meg_arr = array(
"err"=>"1",
"msg" => "成功!" . date('Y-m-d H:i:s',time())
);
echo json_encode($meg_arr);
exit();
}else{
$this->error('数据写入错误!');
}
}
}else{
echo "<script>window.location.href='".U('Index/renzheng')."';</script>";
exit();
}
}