QQ登錄是現在大多數網站集成的一個登錄方式了,但有時會碰到無法登錄這其中原因有很多,今天我碰到PHPCMS V9無法使用QQ登錄網站了,下面一起來看看PHPCMS V9不能QQ登錄網站解決辦法.
這個故障的原因是PHPCMS V9的QQ登錄功能代碼中,使用了file_get_contents函數來獲取騰訊的https網址,這類網址是通過ssl加密傳輸的,雖然,我們可以通過為PHP安裝openssl擴展,讓file_get_contents函數可以獲取到內容,但獲取到的內容還是加密的,無法正常的解密.
我的解決思路是自己編寫一個通過curl讀取數據的方法,替換掉PHPCMS原有的方法,具體如下.
首先,找到phpcmsmodulesmemberclassesqqapi.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); //開源軟件:Vevb.com
- 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來登錄了.
注意:file_get_contents 函數處理遠程文件時不如curl性能好,特別是在多線程時file_get_contents是無法與curl比的哦.
新聞熱點
疑難解答