php的微信登录示例代码,网站微信登录实例代码
//处理并返回微信用户信息类
class wx{
//配置APP参数
private $appid = '';
private $secret = '';
private $re_url = '';
private $state = 'state';
private $access_token = '';
private $openid = '';
public function __construct()
{
}
public function get_code()
{
$this->get_state();
$url = 'https://open.weixin.qq.com/connect/qrconnect?appid='.$this->appid.'&redirect_uri='.urlencode($this->re_url).'&response_type=code&scope=snsapi_login&state='.$_SESSION[$this->state].'#wechat_redirect';
header('Location: '.$url);
}
public function get_info($code,$state){
$this->get_access_token($code,$state);
$userinfo = $this->get_user_info();
return $userinfo;
}
/**
* [get_access_token 获取access_token]
* @param [string] $code [登陆后返回的$_GET['code']]
* @return [array] [expires_in 为有效时间 , access_token 为授权码 ; 失败返回 error , error_description ]
*/
public function get_access_token($code,$state)
{
//$this->is_state($state);
//获取access_token
$token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$this->appid.'&secret='.$this->secret.'&code='.$code.'&grant_type=authorization_code';
$result = json_decode($this->_curl_get_content($token_url),true);
$this->access_token = $result['access_token'];
$this->openid = $result['openid'];
}
/**
* [get_user_info 获取用户信息]
* @param [string] $token [授权码]
* @param [string] $openid [用户唯一ID]
* @return [array] [ret:返回码,为0时成功。msg为错误信息,正确返回时为空。...params]
*/
public function get_user_info()
{
$url = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$this->access_token.'&openid='.$this->openid;
$info = json_decode($this->_curl_get_content($url), TRUE);
$info1['name'] = $info['nickname'];
$info1['sex'] = $info['sex'];
$info1['img'] = $info['headimgurl'];
$info1['openid'] = $info['openid'];
$info1['unid'] = $info['unionid'];
return $info1;
}
private function _curl_get_content($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
//设置超时时间为3s
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 3);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
//生成随机参数
private function get_state() {
$str = str_shuffle('qazxswedcvfrtgbnhyujmkiol123456789') . time();
$_SESSION['state'] = md5(md5($str));
}
//判断随机数
private function is_state($state) {
if($state!==$_SESSION[$this->state]){
exit('随机数检验失败,疑似csrf攻击');
}
}
}
php的微信登录示例代码,网站微信登录实例代码相关推荐
- java 微信 摇一摇红包_微信小程序“摇一摇”的实例代码
微信小程序并没有提供摇一摇API接口,但是提供了一个重力感应的API 「wx.onAccelerometerChange(CALLBACK)」,我们可以用这个方法来模拟微信摇一摇功能,代码如下: Pa ...
- pos请求 微信小程序_微信小程序蓝牙连接小票打印机实例代码详解
1.连接蓝牙 (第一次发表博客) 第一步打开蓝牙并搜索附近打印机设备// startSearch: function() { var that = this wx.openBluetoothAdapt ...
- php欢迎界面代码,分享微信小程序欢迎界面开发的实例代码
这篇文章主要分享微信小程序欢迎界面开发的实例代码的相关资料,这里实现欢迎界面的简单实例和实现代码及实现效果图,需要的朋友可以参考下 微信小程序 欢迎界面 市面上大多数的app都会有一个欢迎界面,下面将 ...
- ip登陆异常 php,PHP实例:PHP制作登录异常ip检测功能的实例代码
<PHP实例:PHP制作登录异常ip检测功能的实例代码>要点: 本文介绍了PHP实例:PHP制作登录异常ip检测功能的实例代码,希望对您有用.如果有疑问,可以联系我们. 使用函数查询数据库 ...
- 网站底部运行时间的php代码,网站底部运行时间统计代码
也许您和我一样,想在自己站点底部或者任意位置添加一个运行时间统计的代码,对我来说这是一个特殊的日子,值得留恋,值得铭记. 在这里我也收集并测试了部分,能有效的显示本站已运行N天,接下来上干货吧. js ...
- php注册登录代码初学,php 用户注册实例代码,适合初学者_PHP教程
php教程 用户注册实例代码,适合初学者 if($_POST[submit]){ checkusername($_POST[username]); if($_SESSION["code&qu ...
- python聊天程序程序代码_python聊天程序实例代码分享
代码简单,直接看代码吧: 代码如下: import socket import threading import re #import Tkinter def ser(): s=socket.sock ...
- php文件缓存代码,php文件缓存实例代码
php教程文件缓存实例代码 缓存在实际使用当中应用很广泛,可以减轻对服务器数据库教程的访问,提高运行速度.目前很多cms内容管理系统中频繁使用缓存机制来提高系统运行的效率 cache.php 代码如下 ...
- java的多态代码例子_java 多态实例代码
多态是同一个行为具有多个不同表现形式或形态的能力.多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现,比如: 在现实中,我们按下F1键这个动作: 如果当前在Flash界 ...
最新文章
- admininfo.php,admin.php 源代码在线查看 - FTB安装版 v1.3(虚拟形象)FTB安装版 v1.3(虚拟形象) 资源下载 虫虫电子下载站...
- 【计算机网络】网络层 : 移动 IP 技术 ( 移动节点 | 本地代理 | 外部代理 | 永久地址 | 转交地址 | 移动 IP 通信过程 )
- 算法题 身高差_10个大数据处理常见算法题
- windows 2008r2文件服务器部分用户访问不了_苹果设备如何访问 Windows 文件共享?...
- (转)淘淘商城系列——服务调用测试
- lucene域的各种类型
- gson转对象变成null_FastJson、Jackson、Gson进行Java对象转换Json的细节处理
- 什么原数据更容易平稳_为什么老年人更容易患上艾滋病?
- c语言16位字节只能用到255,《C语言程序设计》月考试题(第三章).doc
- 解析文本文件 r 与 rb 模式的区别(Python)
- SCM供应链管理系统的优点
- SourceOffSite
- A股退市公司名单及情况(1997-2020年)
- R语言深度学习GPU版本的下载
- POJ 1008 玛雅日历
- gwt php,java – 启动GWT项目的PHP程序员的任何好技巧?
- 储存卡误删都能恢复吗?这个方法大家用了都说好
- Comparator.comparing排序的坑
- python为什么运行不了_终端里为什么无法运行python?
- b、B、KB、MB、GB 的关系?
热门文章
- 使用RDKit将pdb文件转成SMILES
- leetcode691:Stickers to Spell Word
- SpringBoot定时器
- 【转】VO BO PO 介绍
- 以一个通俗易懂的方式解释一下写程序为什么要声明接口和类,面向对象的编程思想,字数不多,主要通过代码理解
- leetcode938.RangeSumofBST
- 【C++ Primer】 神秘的 sizeof(union) 、sizeof(struct) 和内存对齐技术
- 自己写的Weblogic的poc
- HTTPS的SSL证书配置
- 牛客小白月赛11 J Rinne Loves Math