


WeChat scan QR code to log in to the website code example_PHP tutorial
Please download the snoopy class first
/**
* 微信公众平台PHP-SDK
* Wechatauth为非官方微信登陆API
* 用户通过扫描网页提供的二维码实现登陆信息获取
* 主要实现如下功能:
* get_login_code() 获取登陆授权码, 通过授权码才能获取二维码
* get_code_image($code='') 将上面获取的授权码转换为图片二维码
* verify_code() 鉴定是否登陆成功,返回200为最终授权成功.
* get_login_cookie() 鉴定成功后调用此方法即可获取用户基本信息
* sendNews($account,$title,$summary,$content,$pic,$srcurl='') 向一个微信账户发送图文信息
* get_avatar($url) 获取用户头像图片数据
* @author dodge
* @link https://github.com/dodgepudding/wechat-php-sdk
* @version 1.1
*
*/
include "snoopy.class.php";
class Wechatauth
{
private $cookie;
private $_cookiename;
private $_cookieexpired = 3600;
private $_account = 'test';
private $_datapath = './data/cookie_';
private $debug;
private $_logcallback;
public $login_user; //当前登陆用户, 调用get_login_info后获取
public function __construct($options)
{
$this->_account = isset($options['account'])?$options['account']:'';
$this->_datapath = isset($options['datapath'])?$options['datapath']:$this->_datapath;
$this->debug = isset($options['debug'])?$options['debug']:false;
$this->_logcallback = isset($options['logcallback'])?$options['logcallback']:false;
$this->_cookiename = $this->_datapath.$this->_account;
$this->getCookie($this->_cookiename);
}
/**
* 把cookie写入缓存
* @param string $filename 缓存文件名
* @param string $content 文件内容
* @return bool
*/
public function saveCookie($filename,$content){
return file_put_contents($filename,$content);
}
/**
* Read cookie cache content
* @param string $filename Cache file name
* @return string cookie
*/
public function getCookie($filename){
if (file_exists($filename)) {
$mtime = filemtime($filename);
if ($mtime
/**
* 通过授权码获取对应的二维码图片地址
* @param string $code
* @return string image url
*/
public function get_code_image($code=''){
if ($code=='') $code = $this->_logincode;
if (!$code) return false;
return 'http://login.weixin.qq.com/qrcode/'.$this->_logincode.'?t=webwx';
}
/**
* 设置二维码对应的授权码
* @param string $code
* @return class $this
*/
public function set_login_code($code) {
$this->_logincode = $code;
return $this;
}
/**
* 二维码登陆验证
*
* @return status:
* >=400: invaild code; 408: not auth and wait, 400,401: not valid or expired
* 201: just scaned but not confirm
* 200: confirm then you can get user info
*/
public function verify_code() {
if (!$this->_logincode) return false;
$t = time().strval(mt_rand(100,999));
$url = 'https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?uuid='.$this->_logincode.'&tip=1&_='.$t;
$send_snoopy = new Snoopy;
$send_snoopy->referer = "https://wx.qq.com/";
$send_snoopy->fetch($url);
$result = $send_snoopy->results;
$this->log('step1:'.$result);
if ($result) {
preg_match("/window\.code=(\d+)/",$result,$matches);
if(count($matches)>1) {
$status = intval($matches[1]);
if ($status==201) $_SESSION['login_step'] = 1;
if ($status==200) {
preg_match("/ticket=([0-9a-z-_]+)&lang=zh_CN&scan=(\d+)/",$result,$matches);
$this->log('step2:'.print_r($matches,true));
if (count($matches)>1) {
$ticket = $matches[1];
$scan = $matches[2];
$loginurl = 'https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?ticket='.$ticket.'&lang=zh_CN&scan='.$scan.'&fun=new';
$send_snoopy = new Snoopy;
$send_snoopy->referer = "https://wx.qq.com/";
$send_snoopy->fetch($loginurl);
$this->log('step3:'.print_r($send_snoopy->headers,true));
foreach ($send_snoopy->headers as $key => $value) {
$value = trim($value);
if(strpos($value,'Set-Cookie: ') !== false){
$tmp = str_replace("Set-Cookie: ","",$value);
$tmp = str_replace("Path=/","",$tmp);
$tmp = str_replace("Domain=.qq.com; ","",$tmp);
$cookie.=$tmp;
}
}
$cookie .="Domain=.qq.com;";
$this->cookie = $cookie;
$this->saveCookie($this->_cookiename,$this->cookie);
}
}
return $status;
}
}
return false;
}
/**
* Get the login cookie
**/
public function get_login_cookie($is_array = false){
if (!$is_array) return $this->cookie;
$c_arr = explode(';',$this->cookie);
$cookie = array();
foreach($c_arr as $item) {
$kitem = explode('=',trim($item));
if (count($kitem)>1) {
$key = trim($kitem[0]);
$val = trim($kitem[1]);
if (!empty($val)) $cookie[$key] = $val;
}
}
return $cookie;
}
/**
* Obtain user login information after authorized login
*/
public function get_login_info(){
if (!$this->cookie) return false;
$t = time().strval(mt_rand(100,999));
$send_snoopy = new Snoopy;
$submit = 'https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r='.$t;
$send_snoopy->rawheaders['Cookie']= $this->cookie;
$send_snoopy->referer = "https://wx.qq.com/";
$send_snoopy->submit($submit,array());
$this->log('login_info:'.$send_snoopy->results);
$result = json_decode($send_snoopy->results,true);
if ($result['BaseResponse']['Ret']<0) return false;
$this->_login_user = $result['User'];
return $result;
}
/**
* Get avatar
* @param string $url Pass in the avatar address obtained from the user information interface
*/
public function get_avatar($url) {
if (!$this->cookie) return false;
if (strpos($url, 'http')===false) {
$url = 'http://wx.qq.com'.$url;
}
$send_snoopy = new Snoopy;
$send_snoopy->rawheaders['Cookie']= $this->cookie;
$send_snoopy->referer = "https://wx.qq.com/";
$send_snoopy->fetch($url);
$result = $send_snoopy->results;
if ($result)
return $result;
else
return false;
}
/**
* Log out the current logged in user
*/
public function logout(){
if (!$this->cookie) return false;
preg_match("/wxuin=(w+);/",$this->cookie,$matches);
if (count($matches)>1) $uid = $matches[1];
preg_match("/wxsid=(w+);/",$this->cookie,$matches);
if (count($matches)>1) $sid = $matches[1];
$this->log('logout: uid='.$uid.';sid='.$sid);
$send_snoopy = new Snoopy;
$submit = 'https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxlogout?redirect=1&type=1';
$send_snoopy->rawheaders['Cookie']= $this->cookie;
$send_snoopy->referer = "https://wx.qq.com/";
$send_snoopy->submit($submit,array('uin'=>$uid,'sid'=>$sid));
$this->deleteCookie($this->_cookiename);
return true;
}
}

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

DeepSeek: A powerful AI image generation tool! DeepSeek itself is not an image generation tool, but its powerful core technology provides underlying support for many AI painting tools. Want to know how to use DeepSeek to generate images indirectly? Please continue reading! Generate images with DeepSeek-based AI tools: The following steps will guide you to use these tools: Launch the AI Painting Tool: Search and open a DeepSeek-based AI Painting Tool (for example, search "Simple AI"). Select the drawing mode: select "AI Drawing" or similar function, and select the image type according to your needs, such as "Anime Avatar", "Landscape"

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

Gate.io, a leading cryptocurrency trading platform founded in 2013, provides Chinese users with a complete official Chinese website. The website provides a wide range of services, including spot trading, futures trading and lending, and provides special features such as Chinese interface, rich resources and community support.

Gateio Exchange app download channels for old versions, covering official, third-party application markets, forum communities and other channels. It also provides download precautions to help you easily obtain old versions and solve the problems of discomfort in using new versions or device compatibility.

This article provides a detailed guide to safe download of Ouyi OKX App in China. Due to restrictions on domestic app stores, users are advised to download the App through the official website of Ouyi OKX, or use the QR code provided by the official website to scan and download. During the download process, be sure to verify the official website address, check the application permissions, perform a security scan after installation, and enable two-factor verification. During use, please abide by local laws and regulations, use a safe network environment, protect account security, be vigilant against fraud, and invest rationally. This article is for reference only and does not constitute investment advice. Digital asset transactions are at your own risk.
