QQ登錄是現(xiàn)在大多數(shù)網(wǎng)站集成的一個(gè)登錄方式了,但有時(shí)會(huì)碰到無(wú)法登錄這其中原因有很多,今天我碰到PHPCMS V9無(wú)法使用QQ登錄網(wǎng)站了,下面一起來(lái)看看PHPCMS V9不能QQ登錄網(wǎng)站解決辦法.
這個(gè)故障的原因是PHPCMS V9的QQ登錄功能代碼中,使用了file_get_contents函數(shù)來(lái)獲取騰訊的https網(wǎng)址,這類網(wǎng)址是通過(guò)ssl加密傳輸?shù)?雖然,我們可以通過(guò)為PHP安裝openssl擴(kuò)展,讓file_get_contents函數(shù)可以獲取到內(nèi)容,但獲取到的內(nèi)容還是加密的,無(wú)法正常的解密.
我的解決思路是自己編寫(xiě)一個(gè)通過(guò)curl讀取數(shù)據(jù)的方法,替換掉PHPCMS原有的方法,具體如下.
首先,找到phpcmsmodulesmemberclassesqqapi.class.php文件.
我們?cè)谶@個(gè)qqapi.class.php文件的末尾添加一個(gè)名為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); //開(kāi)源軟件:Vevb.com
- return $result;
- }
添加好get_ssl_content方法后,我們?cè)僭趒qapi.class.php中搜索“file_get_contents($url)”,找到所以出現(xiàn)的位置,然后判斷對(duì)應(yīng)的$url地址開(kāi)頭如果是https,那么就把這個(gè)函數(shù)替換為我們上面自己編寫(xiě)的get_ssl_content方法,代碼如下:
$content = $this->get_ssl_content($url);
至此,我們已經(jīng)完成了改寫(xiě)工作,此時(shí)PHPCMS應(yīng)該可以正常通過(guò)QQ來(lái)登錄了.
注意:file_get_contents 函數(shù)處理遠(yuǎn)程文件時(shí)不如curl性能好,特別是在多線程時(shí)file_get_contents是無(wú)法與curl比的哦.
新聞熱點(diǎn)
疑難解答
圖片精選