我正在大学网站上工作。我正在使用Facebook插件来显示Facebook页面的相似内容:
<iframe src="//www.facebook.com/plugins/likebox.php?href=https%3A%2F%2Fwww.facebook.com%2Fpcclahore&width=364&height=220&show_faces=true&colorscheme=light&stream=false&border_color&header=true" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:364px; height:220px;" allowTransparency="true"></iframe>
问题在于Facebook在大学服务器上被阻止,所以除了警告之外什么也没有出现。是否可以显示静态图像而不是Facebook插件,而互联网不可用(localhost)或Facebook无法访问?像这样:
if(Facebook accessible)
show Facebook pluging
else
<img src="images/fb.jpg" width="364" height="220">
答案 0 :(得分:3)
// check if local server is HTTPS if so check Facebook HTTPS
$remote = ('80' !== $_SERVER['SERVER_PORT'])
? array('host' => 'ssl://www.facebook.com', 'port' => 443) // HTTPS Facebook
: array('host' => 'www.facebook.com', 'port' => 80); // HTTP Facebook
$fp = @ fsockopen($remote['host'], $remote['port'], $errno, $errstr, 5);
echo (!$fp) // check if failed
? '<img src="images/fb.jpg" width="364" height="220">' // output local image
: '<iframe src="//www.facebook.com/plugins/likebox.php?href=https%3A%2F%2Fwww.facebook.com%2Fpcclahore&width=364&height=220&show_faces=true&colorscheme=light&stream=false&border_color&header=true" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:364px; height:220px;" allowTransparency="true"></iframe>'; // output IFRAME
答案 1 :(得分:1)
您必须使用客户端JavaScript而不是服务器端代码。 JavaScript允许您检查图像是否可以成功加载,因此您可以尝试使用它来检查是否可以通过www.facebook.com
( test page )加载图片来访问Facebook:
var testImg = new Image();
testImg.onload = function() {
alert('facebook REACHABLE');
};
testImg.onerror = function() {
alert('facebook UNREACHABLE');
};
testImg.src = '//www.facebook.com/images/fb_logo_small.png?' + new Date().getTime();
然后,您可以相应地设置iframe的src
属性。
您也可以将onerror
放在iframe上(而不是使用单独的测试图像);但是,这不起作用学院的内容过滤系统不会返回指示错误的HTTP状态。
答案 2 :(得分:0)
您可以先尝试ping该网站。如果结果是肯定显示插件,则显示静态图像。将域名设为facebook.com
function pingDomain($domain){
$file = fsockopen ($domain, 80, $errno, $errstr, 10);
$status = 0;
if (!$file) $status = -1; // show static image
else {
//show plugin
}
}
答案 3 :(得分:-1)
您可以通过php的fsockopen
函数检查Facebook是否可用。
即
$check = fsockopen("www.facebook.com", 80, "error_no", "error_message", timeout in seconds);
if (!$check) {
//iframe
} else {
echo "<img src='images/fb.jpg' width='364' height='220'>"
}
我没有检查它是否有效。试试吧。