今天发现我这里0.gravatar.com挂掉了,满屏幕的XX实在是刺眼,于是想做一个类似小偷的图床放到国外服务器上去来做一个中转,想到了就马上着手去做
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | define( 'PATH', dirname(__FILE__) . '/' ); //截取对应字段 $url = $_SERVER["REQUEST_URI"]; preg_match_all("/(avatar\/\?)(.*?)(\?s=)/", $url, $key); $key = $key['2']['0']; $key = (isset($key) && ctype_alnum($key) ? $key : '07b979c71a73f11087a78102b320fe14'); preg_match_all("/(s=)(.*?)(&d=)/", $url, $s); $s = $s['2']['0']; $s = (isset($s) && is_numeric($s) ? $s : 32); $r = substr ($url, -1); $r = (isset($r) && ctype_alnum($r) ? $r : 'G'); $d = PATH . "07b979c71a73f11087a78102b320fe14.dat"; //默认头像 $gravatar_cache = PATH . $key . ".dat"; //判断头像是否存在 if (!is_file($gravatar_cache)) { $gravatar = 'http://www.gravatar.com/avatar/'.$key.'?s='.$s.'&d='.$d.'&r='.$r; copy($gravatar, $gravatar_cache); if (filesize($gravatar_cache) == 0) { copy($d, $gravatar_cache); } } $gravatar_cache_value = file_get_contents($gravatar_cache); //FALSE if 404 header('Content-type: image/jpeg'); echo $gravatar_cache_value; unset ($gravatar_cache_value); exit; |
修改,测试,呼呼,终于OK,木有问题了,正准备插入到WP中去的时候,找到了pluggable.php中调用Gravatar的代码,猛然一惊,可以直接拿WP开刀,把头像的调用全部改成带WWW的主服务器就结了嘛!得白干了
打开wp-includes/pluggable.php找到下面的一段
1 2 3 4 5 6 7 8 | if ( is_ssl() ) { $host = 'https://secure.gravatar.com'; } else { if ( !empty($email) ) $host = sprintf( "http://%d.gravatar.com", ( hexdec( $email_hash[0] ) % 2 ) ); else $host = 'http://0.gravatar.com'; } |
直接屏蔽掉,修改成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /* if ( is_ssl() ) { $host = 'https://secure.gravatar.com'; } else { if ( !empty($email) ) $host = sprintf( "http://%d.gravatar.com", ( hexdec( $email_hash[0] ) % 2 ) ); else $host = 'http://0.gravatar.com'; } */ if ( is_ssl() ) { $host = 'https://secure.gravatar.com'; } else { $host = 'http://www.gravatar.com'; } |
问题解决,做无用功了。
一般我很少遇到这种问题!
但是我们博客的访客常遇到啊·
路过看看,留个脚印再拜读
欢迎来访!
我的博客也需要去做下这佣,要不评论都没有好看的头像功能。
呵呵,话说先去Gravatar申请一个自己的头像,然后在后台开启就可以了
e …又一个被墙了啊。。。伟大的天朝正在构建世界最大的局域网
木有办法啊,眼睁睁的,无能为力。