15621857753

phpcmsV9QQ一键登录无法正常使用的处理方法

来源:齐鲁建站 栏目:开发教程 阅读: 日期:2022-12-28

这个故障的原因是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来登录了。

展开