php实现微信网页授权回调代理
2023-09-14 08:57:36 时间
一个简单的php文件,实现微信网页授权回调域名的代理转发
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?php function is_HTTPS() { if (!isset($_SERVER['HTTPS'])) return FALSE; if ($_SERVER['HTTPS'] === 1) { //Apache return TRUE; } elseif ($_SERVER['HTTPS'] === 'on') { //IIS return TRUE; } elseif ($_SERVER['SERVER_PORT'] == 443) { //其他 return TRUE; } return FALSE; } function getDomain() { $server_name = $_SERVER['SERVER_NAME']; if (strpos($server_name, 'www.') !== false) { return substr($server_name, 4); } return $server_name; } $appid = ''; $scope = 'snsapi_login'; $state = ''; $code = ''; $redirect_uri = ''; $device = ''; $protocol = ''; if (is_HTTPS()) { $protocol = 'https'; } else { $protocol = 'http'; } if (isset($_GET['device'])) { $device = $_GET['device']; } if (isset($_GET['appid'])) { $appid = $_GET['appid']; } if (isset($_GET['state'])) { $state = $_GET['state']; } if (isset($_GET['redirect_uri'])) { $redirect_uri = $_GET['redirect_uri']; } if (isset($_GET['code'])) { $code = $_GET['code']; } if (isset($_GET['scope'])) { $scope = $_GET['scope']; } if ($code == 'test') { exit; } if (empty($code)) { $authUrl = ''; if ($device == 'pc') { $authUrl = 'https://open.weixin.qq.com/connect/qrconnect'; } else { $authUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize'; } $options = [ $authUrl, '?appid=' . $appid, '&redirect_uri=' . urlencode($protocol . '://' . $_SERVER['HTTP_HOST'] . '/'), '&response_type=code', '&scope=' . $scope, '&state=' . $state, '#wechat_redirect' ]; //把redirect_uri先写到cookie header(implode('', [ "Set-Cookie: redirect_uri=", urlencode($redirect_uri), "; path=/; domain=", getDomain(), "; expires=" . gmstrftime("%A, %d-%b-%Y %H:%M:%S GMT", time() + 60), "; Max-Age=" + 60, "; httponly" ])); header('Location: ' . implode('', $options)); } else { if (isset($_COOKIE['redirect_uri'])) { $back_url = urldecode($_COOKIE['redirect_uri']); header('Location: ' . implode('', [ $back_url, strpos($back_url, '?') ? '&' : '?', 'code=' . $code, '&state=' . $state ])); } } ?>
转自:http://www.cnblogs.com/lyzg/p/6159617.html
相关链接:https://github.com/liuyunzhuge/php_weixin_proxy
https://github.com/lionskys/codetoany
相关文章
- 【说站】php中Redis和Memcached的不同
- [PHP] 自动加载的实现详解编程语言
- PHP连接MySQL的实现方法(php怎么连接mysql)
- PHP解析xml的方法详解编程语言
- PHP扩展Redis:建立强大的缓存架构(php扩展redis)
- PHP连接MySQL:实现数据交互(php与mysql连接)
- Linux操作系统下卸载PHP的步骤(linux卸载php)
- 开发使用PHP进行Redis项目开发(redis项目php)
- PHP如何正确输出MySQL中文字符避免乱码?(php输出mysql乱码)
- PHP配置指南:MySQL编码设置详解(php设置mysql编码)
- Linux下PHP的重启操作(php重启.linux)
- 脚本定时执行PHP脚本任务:Linux下的解决方案(linux定时php)
- MySQL与PHP的连接:实现快速数据库访问(mysql连接php)
- PHP封装Redis:提高工作效率(封装php redis)
- 深入理解PHP操作MySQL类库的精髓(php操作mysql类库)
- Linux下搭建PHP开发环境的一步步操作(linux配置php环境)
- 从零开始用php认识redis(认识redis php)
- 安装PHP扩展程序让网站支持Redis(安装php-redis)
- 一个php作的文本留言本的例子(一)
- php网页后退不再出现过期
- php学习数组课件
- php中并发读写文件冲突的解决方案
- 浅谈PHP调用Webservice思路及源码分享
- php实现微信公众平台账号自定义菜单类