微信网页开发—网页授权显示用户信息并写入数据库2.0版

1,0版本

回调页面

<!DOCTYPE html>
<html lang="zxx">

<head>
	<title>信息详情</title>
	<!-- Meta tag Keywords -->
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<meta charset="UTF-8" />
	<meta name="keywords" content="" />
	<style>
		.container {
			text-align: center;
			font-size: 17px;
		}
		.head {
			width: 150px;
			height: 150px;
		}
	</style>
	<script>
		addEventListener("load", function () {
			setTimeout(hideURLbar, 0);
		}, false);

		function hideURLbar() {
			window.scrollTo(0, 1);
		}
	</script>
	<script>				
		//获取地址参数, 参数可以是中文也可以是英文
		function getUrlParam(key) {
			var url = window.location.search;
			var reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)");
			var result = url.substr(1).match(reg);
			return result ? decodeURIComponent(result[2]) : null;
		}	
		var openid = getUrlParam("openid"); // 用户openid
		var nickname = getUrlParam("nickname"); // 用户昵称
		var headimgurl = getUrlParam("headimgurl"); //用户头像
		
		var appID = "公众号AppID"; // 公众号AppID
		var redirectUri = "http://授权接口地址/oauth2.php"; // 授权接口地址
		var state = "project1"; // 状态标识
		if(openid == null || openid == undefined || openid == ''){ // 通过判断地址参数是否有openid来确定是否要跳转授权
			var strUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appID + "&redirect_uri=" + redirectUri + "&response_type=code&scope=snsapi_userinfo&state=" + state + "#wechat_redirect";
			window.location.href = strUrl;
		}
	</script>
	<!--// Meta tag Keywords -->

	<!-- Custom-Files -->
	<link rel="stylesheet" href="css/bootstrap.css">
	<!-- Bootstrap-Core-CSS -->
	<link rel="stylesheet" href="css/style.css" type="text/css" media="all" />
	<!-- Style-CSS -->
	<link href="css/font-awesome.min.css" rel="stylesheet">
	<!-- Font-Awesome-Icons-CSS -->
	<!-- //Custom-Files -->

	<!-- Web-Fonts -->
	<link href="http://fonts.googleapis.com/css?family=Source+Code+Pro:200,300,400,500,600,700,900&amp;subset=latin-ext" rel="stylesheet">
	<!-- //Web-Fonts -->
</head>

<body>
	<!-- contact -->
	<div class="contact he-codes">
		<!-- contact content -->
		<div class="contact-cont pt-5 pb-xl-5 pb-3">	
			<div class="container">
	        <img src="" alt="head" id="head" />
	        <br/><br/>
	        <span>昵称:<font id="nickname"></font></span>
	        <br/><br/>
	        <span><font id="openid"></font></span>	
		</div>
		<!-- //contact content -->
		<!-- copyright -->
		<div class="wthree_copy_right text-right ml-auto mt-5 mr-sm-5 mr-4">
			<p class="text-li">Copyright &copy; 2019.Company name All rights reserved.</p>
		</div>
		<!-- //copyright -->
	</div>
	<!-- //contact -->
	<script>
		document.getElementById("head").src = headimgurl;
		document.getElementById("nickname").innerHTML = nickname;
		document.getElementById("openid").innerHTML = openid;
	</script>
</body>

</html>

php授权回调代码

<?php
$appId = '#'; // 公众号AppId
$appSecret = '#'; // 公众号AppSecret
$code = $_GET['code'];
$state = $_GET['state'];
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appId&secret=$appSecret&code={$code}&grant_type=authorization_code";
$a = file_get_contents($url);
switch($state){
	case 'project1':
		preg_match_all("/\"openid\":\"(.*?)\"/", $a, $matches, PREG_SET_ORDER);
		$openid = $matches[0][1];
		
		$json=(array)json_decode($a);
		if(!isset($json['errcode'])){
			$openid = $json['openid'];
			$url ="https://api.weixin.qq.com/sns/userinfo?access_token=".$json['access_token']."&openid=".$json['openid'];
			$a = file_get_contents($url);
			$json = (array)json_decode($a);
			$nickname = $json['nickname'];
			$headimgurl = $json['headimgurl'];
			//定义变量
			$nicheng = $nickname;
			$id = $openid;
			//连接数据库写入操作
			$dbhost = '#';  // mysql服务器主机地址
			$dbuser = '#';  // mysql用户名
			$dbpass = '#';  // mysql用户名密码
			$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
			if(! $conn )
			{
			  die('连接失败: ' . mysqli_error($conn));
			}
			echo '连接成功<br />';
			// 设置编码,防止中文乱码
			mysqli_query($conn , "set names utf8");
			$sql = "INSERT INTO # ".
			        "(nicheng,openid) ".
			        "VALUES ".
			        "('$nicheng','$id')";
			mysqli_select_db( $conn, '#' );
			$retval = mysqli_query( $conn, $sql );
			if(! $retval )
			{
			  die('无法插入数据: ' . mysqli_error($conn));
			}
			echo "数据插入成功\n";
			mysqli_close($conn);
			header("Location:http://shouquan.lushi78778.icu/jieping.html?openid=$openid&nickname=$nickname&headimgurl=$headimgurl");
		}else{
		}
	break;
	
	default:
		echo "ERROR";
}
?>

数据库设计

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `#`;
CREATE TABLE `#`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nicheng` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `openid` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值