
打开
.\include\global.func.php
查找(在最后几行)
function discuz_uc_avatar($uid, $size = '') {
return UC_API.'/avatar.php?uid='.$uid.'&size='.$size;
}
替换
function discuz_uc_avatar($uid, $size = '') {
global $db, $tablepre;
$query = $db->fetch_first("SELECT avatar FROM {$tablepre}memberfields where uid = $uid");
if($query['avatar'] != "") return $query['avatar'];
$avatar = $discuz_root.'./images/avatars/customavatars/'.$uid.'.jpg';
if(file_exists($avatar)) return $avatar;
return UC_API.'/avatar.php?uid='.$uid.'&size='.$size;
}
官方 0606 补丁修改内容
查找:
function discuz_uc_avatar($uid, $size = '', $returnsrc = FALSE) {
$size = in_array($size, array('big', 'middle', 'small')) ? $size : 'middle';
$uid = abs(intval($uid));
$uid = sprintf("%09d", $uid);
$dir1 = substr($uid, 0, 3);
$dir2 = substr($uid, 3, 2);
$dir3 = substr($uid, 5, 2);
return $returnsrc ? UC_API.'/data/avatar/'.$dir1.'/'.$dir2.'/'.$dir3.'/'.substr($uid, -2)."_avatar_$size.jpg" : '<img src="'.UC_API.'/data/avatar/'.$dir1.'/'.$dir2.'/'.$dir3.'/'.substr($uid, -2)."_avatar_$size.jpg".'" onerror="this.onerror=null;this.src=\''.UC_API.'/images/noavatar_'.$size.'.gif\'">';
}
替换为(这里解决了无头像红叉问题和flash头像失效问题)
/*
函数:remote_file_exists
功能:判断远程文件是否存在
参数: $url_file - 远程文件URL
返回:存在返回true,不存在或者其他原因返回false
*/
function remote_file_exists($url_file){
//检测输入
$url_file = trim($url_file);
if (empty($url_file)) { return false; }
$url_arr = parse_url($url_file);
if (!is_array($url_arr) || empty($url_arr)){ return false; }
//获取请求数据
$host = $url_arr['host'];
$path = $url_arr['path'] ."?". $url_arr['query'];
$port = isset($url_arr['port']) ? $url_arr['port'] : "80";
//连接服务器
$fp = fsockopen($host, $port, $err_no, $err_str, 30);
if (!$fp){ return false; }
//构造请求协议
$request_str = "GET ".$path." HTTP/1.1\r\n";
$request_str .= "Host: ".$host."\r\n";
$request_str .= "Connection: Close\r\n\r\n";
//发送请求
fwrite($fp, $request_str);
$first_header = fgets($fp, 1024);
fclose($fp);
//判断文件是否存在
if (trim($first_header) == ""){ return false; }
if (!preg_match("/200/", $first_header)){
return false;
}
return true;
}
function discuz_uc_avatar($uid, $size = '', $returnsrc = FALSE) {
global $db, $tablepre;
$query = $db->fetch_first("SELECT avatar FROM {$tablepre}memberfields where uid = $uid");
if($query['avatar'] != "")
if(remote_file_exists($query['avatar'])) return $returnsrc ? $query['avatar'] : '<img src="'.$query['avatar'].'">';
$avatar = $discuz_root.'./images/avatars/customavatars/'.$uid.'.jpg';
if(file_exists($avatar)) return $returnsrc ? $avatar : '<img src="'.$avatar.'">';
$size = in_array($size, array('big', 'middle', 'small')) ? $size : 'middle';
$uid = abs(intval($uid));
$uid = sprintf("%09d", $uid);
$dir1 = substr($uid, 0, 3);
$dir2 = substr($uid, 3, 2);
$dir3 = substr($uid, 5, 2);
$avatar = UC_API.'/data/avatar/'.$dir1.'/'.$dir2.'/'.$dir3.'/'.substr($uid, -2)."_avatar_$size.jpg";
if(!remote_file_exists($avatar)) $avatar = UC_API."/images/noavatar_$size.gif";
return $returnsrc ? $avatar : '<img src="'.$avatar.'">';
}