目前本站FB订阅图标的显示服务申请已经停止,但是作为一个负责的男人,我会一直保留以前的申请的图标继续显示的,除非不可抗拒的因素产生,俗话说,授人鱼不如授人以渔,所以对于虚拟主机abroad的兄弟,下面的这段代码或许对你有用。当然啊,你也别担心麻烦,后面会提供源代码的下载和使用方法
< ?php
$feedburner_image ="http://feeds.feedburner.com/~fc/storydaycom?bg=99CCFF&fg=444444&anim=0";//图片的路径
header("Content-type: image/gif");
//
//下面的两个函数来自php.net
//函数的作用是利用socks获取http内容
//
function httpSocketConnection($host, $method, $path, $data)
{
$method = strtoupper($method);
if ($method == "GET")
{
$path.= '?'.$data;
}
$filePointer = fsockopen($host, 80, $errorNumber, $errorString);
if (!$filePointer)
{
return false;
}
$requestHeader = $method." ".$path." HTTP/1.1\r\n";
$requestHeader.= "Host: ".$host."\r\n";
$requestHeader.= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0\r\n";
$requestHeader.= "Content-Type: application/x-www-form-urlencoded\r\n";
if ($method == "POST")
{
$requestHeader.= "Content-Length: ".strlen($data)."\r\n";
}
$requestHeader.= "Connection: close\r\n\r\n";
if ($method == "POST")
{
$requestHeader.= $data;
}
fwrite($filePointer, $requestHeader);
$responseHeader = '';
$responseContent = '';
do
{
$responseHeader.= fread($filePointer, 1);
}
while (!preg_match('/\\r\\n\\r\\n$/', $responseHeader));
if (!strstr($responseHeader, "Transfer-Encoding: chunked"))
{
while (!feof($filePointer))
{
$responseContent.= fgets($filePointer, 128);
}
}
else
{
while ($chunk_length = hexdec(fgets($filePointer)))
{
$responseContentChunk = '';
$read_length = 0;
while ($read_length < $chunk_length)
{
$responseContentChunk .= fread($filePointer, $chunk_length - $read_length);
$read_length = strlen($responseContentChunk);
}
$responseContent.= $responseContentChunk;
fgets($filePointer);
}
}
return chop($responseContent);
}
function parseChunked($response) {
$do = true;
$return = "";
$size = NULL;
while($do) {
// suppress warnings w/ @ if offset not in string (past end)
$pos = @strpos($response, "\r\n", 0);
if(!($pos === false) && $size === NULL) {
// we found CRLF, get len from hex
$size = hexdec(substr($response, 0, $pos));
// get the actual chunk-len, reset $response, $size
$return .= substr($response, $pos+2, $size);
$response = substr($response, ($pos+2) + $size);
$size = NULL;
}
else {
$do = false;
} // end if/else
} // end while
return $return;
} // end function parseChunked()
$http_get_path = str_replace("http://feeds.feedburner.com","",$feedburner_image );
require "date.php";//存放上次获取图标的时间
if( date('YmdH') - $lastupdate > 4 ) {
//如果相距上次获取图标的时间超过了4小时
//则更新图标
//reload the image every 4 hours
$phpstr = "";
$contents = httpSocketConnection('feeds.feedburner.com', "GET", $http_get_path, $qString);
//write image file
//将图标写入文件中
$fp =fopen( "feedburner.gif" ,"w+" );
fwrite($fp , $contents);
fclose($fp);
//同时更新本次获取图标的时间
$fp =fopen( "date.php" ,"w+" );
$datecontent = "< ?php \$lastupdate = ".date('YmdH').";\n ?>";
fwrite($fp , $datecontent);
fclose($fp);
die($contents);
}
readfile("feedburner.gif");
?>
代码在这里
fb.zip
请将fb.php用记事本打开,修改顶部$feedburner_image 的路径为你要转发图片的路径
然后将其他两个文件的属性设置成0666,最后在需要引用图片的地方引用fb.php的路径即可。
利用同样的原理大家也可以轻松的解决ajax http的跨域处理问题,不明白这一行在说什么的,忽略这一行。
该日志未加标签
看不懂。高手。