- 2019-9-5
Typecho默认头像来自Gravatar,没设置过的头像都很丑(可能是博主不懂欣赏),之前使用的emlog都是基于QQ头像来作为评论头像,但是使用QQ头像的话,会暴露评论者信息,于是博主在百度查了查,刚好又看到了QQ爹博客有一篇:获取QQ头像地址,并且不暴露QQ号 的一篇文章,于是博主就把两种方法结合了一下可以达到使用QQ邮箱的则使用QQ头像并且不会暴露评论者的信息,使用普通邮箱的则使用Gravatar头像。作为一个不懂PHP的小白来说感觉还可以!!!
下面上代码
食用方法
(食用之前请备份)
打开/var/Typecho/Common.php
找到大概在922行
/** * 获取gravatar头像地址 * * @param string $mail * @param int $size * @param string $rating * @param string $default * @param bool $isSecure * @return string */public static function gravatarUrl($mail, $size, $rating, $default, $isSecure = false){ if (defined('__TYPECHO_GRAVATAR_PREFIX__')) { $url = __TYPECHO_GRAVATAR_PREFIX__; } else { $url = $isSecure ? 'https://secure.gravatar.com' : 'http://www.gravatar.com'; $url .= '/avatar/'; } if (!empty($mail)) { $url .= md5(strtolower(trim($mail))); } $url .= '?s=' . $size; $url .= '&r=' . $rating; $url .= '&d=' . $default; return $url; }
替换为:
public static function gravatarUrl($mail, $size, $rating, $default, $isSecure = false) { $reg = "/^\d{5,11}@[qQ][Qq]\.(com)$/"; if (preg_match($reg, $mail)) { $img = explode("@", $mail); //$url = "//q2.qlogo.cn/headimg_dl?dst_uin={$img[0]}&spec=100"; $geturl = 'http://ptlogin2.qq.com/getface?&imgtype=1&uin='.$img[0]; $qquser = file_get_contents($geturl); $str1 = explode('sdk&k=', $qquser); $str2 = explode('&s=', $str1[1]); $k = $str2[0]; $url = 'https://q1.qlogo.cn/g?b=qq&k='.$k.'&s=100'; } else { if (defined('__TYPECHO_GRAVATAR_PREFIX__')) { $url = __TYPECHO_GRAVATAR_PREFIX__; } else { $url = $isSecure ? 'https://secure.gravatar.com' : 'http://www.gravatar.com'; $url .= '/avatar/'; } if (!empty($mail)) { $url .= md5(strtolower(trim($mail))); } $url .= '?s=' . $size; $url .= '&r=' . $rating; $url .= '&d=' . $default; } return $url; }