//处理并返回微信用户信息类

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的微信登录示例代码,网站微信登录实例代码相关推荐

  1. java 微信 摇一摇红包_微信小程序“摇一摇”的实例代码

    微信小程序并没有提供摇一摇API接口,但是提供了一个重力感应的API 「wx.onAccelerometerChange(CALLBACK)」,我们可以用这个方法来模拟微信摇一摇功能,代码如下: Pa ...

  2. pos请求 微信小程序_微信小程序蓝牙连接小票打印机实例代码详解

    1.连接蓝牙 (第一次发表博客) 第一步打开蓝牙并搜索附近打印机设备// startSearch: function() { var that = this wx.openBluetoothAdapt ...

  3. php欢迎界面代码,分享微信小程序欢迎界面开发的实例代码

    这篇文章主要分享微信小程序欢迎界面开发的实例代码的相关资料,这里实现欢迎界面的简单实例和实现代码及实现效果图,需要的朋友可以参考下 微信小程序 欢迎界面 市面上大多数的app都会有一个欢迎界面,下面将 ...

  4. ip登陆异常 php,PHP实例:PHP制作登录异常ip检测功能的实例代码

    <PHP实例:PHP制作登录异常ip检测功能的实例代码>要点: 本文介绍了PHP实例:PHP制作登录异常ip检测功能的实例代码,希望对您有用.如果有疑问,可以联系我们. 使用函数查询数据库 ...

  5. 网站底部运行时间的php代码,网站底部运行时间统计代码

    也许您和我一样,想在自己站点底部或者任意位置添加一个运行时间统计的代码,对我来说这是一个特殊的日子,值得留恋,值得铭记. 在这里我也收集并测试了部分,能有效的显示本站已运行N天,接下来上干货吧. js ...

  6. php注册登录代码初学,php 用户注册实例代码,适合初学者_PHP教程

    php教程 用户注册实例代码,适合初学者 if($_POST[submit]){ checkusername($_POST[username]); if($_SESSION["code&qu ...

  7. python聊天程序程序代码_python聊天程序实例代码分享

    代码简单,直接看代码吧: 代码如下: import socket import threading import re #import Tkinter def ser(): s=socket.sock ...

  8. php文件缓存代码,php文件缓存实例代码

    php教程文件缓存实例代码 缓存在实际使用当中应用很广泛,可以减轻对服务器数据库教程的访问,提高运行速度.目前很多cms内容管理系统中频繁使用缓存机制来提高系统运行的效率 cache.php 代码如下 ...

  9. java的多态代码例子_java 多态实例代码

    多态是同一个行为具有多个不同表现形式或形态的能力.多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现,比如: 在现实中,我们按下F1键这个动作: 如果当前在Flash界 ...

最新文章

  1. admininfo.php,admin.php 源代码在线查看 - FTB安装版 v1.3(虚拟形象)FTB安装版 v1.3(虚拟形象) 资源下载 虫虫电子下载站...
  2. 【计算机网络】网络层 : 移动 IP 技术 ( 移动节点 | 本地代理 | 外部代理 | 永久地址 | 转交地址 | 移动 IP 通信过程 )
  3. 算法题 身高差_10个大数据处理常见算法题
  4. windows 2008r2文件服务器部分用户访问不了_苹果设备如何访问 Windows 文件共享?...
  5. (转)淘淘商城系列——服务调用测试
  6. lucene域的各种类型
  7. gson转对象变成null_FastJson、Jackson、Gson进行Java对象转换Json的细节处理
  8. 什么原数据更容易平稳_为什么老年人更容易患上艾滋病?
  9. c语言16位字节只能用到255,《C语言程序设计》月考试题(第三章).doc
  10. 解析文本文件 r 与 rb 模式的区别(Python)
  11. SCM供应链管理系统的优点
  12. SourceOffSite
  13. A股退市公司名单及情况(1997-2020年)
  14. R语言深度学习GPU版本的下载
  15. POJ 1008 玛雅日历
  16. gwt php,java – 启动GWT项目的PHP程序员的任何好技巧?
  17. 储存卡误删都能恢复吗?这个方法大家用了都说好
  18. Comparator.comparing排序的坑
  19. python为什么运行不了_终端里为什么无法运行python?
  20. b、B、KB、MB、GB 的关系?

热门文章

  1. 使用RDKit将pdb文件转成SMILES
  2. leetcode691:Stickers to Spell Word
  3. SpringBoot定时器
  4. 【转】VO BO PO 介绍
  5. 以一个通俗易懂的方式解释一下写程序为什么要声明接口和类,面向对象的编程思想,字数不多,主要通过代码理解
  6. leetcode938.RangeSumofBST
  7. 【C++ Primer】 神秘的 sizeof(union) 、sizeof(struct) 和内存对齐技术
  8. 自己写的Weblogic的poc
  9. HTTPS的SSL证书配置
  10. 牛客小白月赛11 J Rinne Loves Math