当前位置:首页 > ThinkPHP

php通过QQ号保存头像到本地+获取QQ昵称

因为腾讯设置了安全机制,头像不能直接显示到当前页面,昵称返回的编码也不是utf8的,需要进行二次处理。

因为腾讯设置了安全机制,头像不能直接显示到当前页面,昵称返回的编码也不是utf8的,需要进行二次处理。

保存头像的函数,稍作更改就可作为通过图片url保存图片到本地。

/**
 * QQ获取头像和昵称
 */
function avatar($qq)
{
    $url = "http://q.qlogo.cn/headimg_dl?dst_uin=" . $qq . "&spec=100";
    $dir = 'uploads/avatar/';
    $filename = time() . ".png";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_URL, $url);
    ob_start();
    curl_exec($ch);
    $return_content = ob_get_contents();
    ob_end_clean();
    $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $fp = @fopen($dir . $filename, "a");
    if ($fp) {
        fwrite($fp, $return_content); //写入文件}
        return '/' . $dir . $filename;
    } else {
        return 'QQ头像保存失败';
    }
}

function nickname($qq)
{
    $urlPre = 'http://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?g_tk=1518561325&uins=';
    $data = file_get_contents($urlPre . $qq);
    $data = iconv("GB2312", "UTF-8", $data);
    $pattern = '/portraitCallBack\((.*)\)/is';
    preg_match($pattern, $data, $result);
    $result = $result[1];
    $nickname = json_decode($result, true)["$qq"][6];
    return $nickname;
}


1

文章评论