PHPCMS V9无法正常通过QQ登录的解决方案
2023-02-18 16:39:49 时间
这个故障的原因是PHPCMS V9的QQ登录功能代码中,使用了file_get_contents函数来获取腾讯的https网址,这类网址是通过ssl加密传输的。虽然,我们可以通过为PHP安装openssl扩展,让file_get_contents函数可以获取到内容,但获取到的内容还是加密的,无法正常的解密。
我的解决思路是自己编写一个通过curl读取数据的方法,替换掉PHPCMS原有的方法,具体如下:
首先,找到\phpcms\modules\member\classes\qqapi.class.php文件。
我们在这个qqapi.class.php文件的末尾添加一个名为get_ssl_content的方法,代码如下:
public function get_ssl_content($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$result = curl_exec($ch);
return $result;
}
添加好get_ssl_content方法后,我们再在qqapi.class.php中搜索“file_get_contents(url)”,找到所以出现的位置,然后判断对应的url地址开头如果是https,那么就把这个函数替换为我们上面自己编写的get_ssl_content方法。代码如下:
$content = $this->get_ssl_content($url);
至此,我们已经完成了改写工作,此时PHPCMS应该可以正常通过QQ来登录了。
阳光部落原创,更多内容请访问http://www.sunbloger.com/
相关文章
- [Linux] ssh秘钥对免密码登陆
- [Linux] zip命令打包文件
- [GO] GO语言gin框架实现管理员认证登陆接口
- [Go] 类型断言和类型判断 if 和 type-switch两种形式
- [GO]解决request origin not allowed by Upgrader.CheckOrigin websocket跨域
- [GO] gin 框架gorm下使用logrus记录sql语句
- [Git] 强制使用远端仓库代码覆盖本地代码
- [GO] 变参函数-GO中函数传递变长参数
- [Linux] host dig nslookup查询域名的DNS解析
- [GO-FLY] GO-FLY客服实现浏览器消息提示音
- After Effects(AE)2023最新绿色安装包MAC+WIN下载
- linux内核和发行版有什么区别?附镜像包以及如何查看Linux系统内核版本和发行版本
- [Go] GoAdminGroup/go-admin的安装和运行
- [Go]开启go module情况下go get后文件下载存放目录
- [Go]解决 can't load package: cannot find module providing package github.com/xxxxx
- 【GOFLY】基于GO语言gin框架和websocket实现的全开源WEB客服即时通讯管理系统
- [Linux] memache打印所有的key
- [Linux] crontab和shell每天定时备份数据库
- [Go] 实战项目在线客服GO-FLY -在gin框架使用IP识别库转换IP为城市
- [Go] GO-FLY客服项目被公众号 "转角遇到GitHub " 推荐