当用户通过微信登录你的网页时,记录用户的openid,对于一个公众号来说,每个用户openid都是唯一的。需要获取公众号的appid与appserect。需要注意的是openid放入session可能会有安全性的问题。
//判断是在微信里面打开
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') == true) {
if ($_SESSION["openid"]=="") {
//配置参数的数组
$CONF = array(
'__APPID__' =>'***',
'__SERECT__' =>'***',
'__CALL_URL__' =>'http://***.net'.$_SERVER["REQUEST_URI"] //当前页地址
);
//没有传递code的情况下,先登录一下
if(!isset($_GET['code']) || empty($_GET['code'])){
$getCodeUrl = "https://open.weixin.qq.com/connect/oauth2/authorize".
"?appid=" . $CONF['__APPID__'].
"&redirect_uri=" . $CONF['__CALL_URL__'].
"&response_type=code".
"&scope=snsapi_base". #!!!scope设置为snsapi_base !!!
"&connect_redirect=1".
"&state=1";
//跳转微信获取code值,去登陆
header('Location:' . $getCodeUrl);
exit;
}else{
$code = trim($_GET['code']);
//使用code,拼凑链接获取用户openid
$str = "https://api.weixin.qq.com/sns/oauth2/access_token".
"?appid={$CONF['__APPID__']}".
"&secret={$CONF['__SERECT__']}".
"&code={$code}".
"&grant_type=authorization_code";
//拿到openid
$html = json_decode(file_get_contents($str),1);
$_SESSION["openid"]=$html['openid'];
}
}
}else{
echo "请在微信客户端打开链接";
exit();
}
参考:https://blog.csdn.net/weixin_36333654/article/details/52882287?locationNum=5&fps=1