2

私は大学のウェブサイトに取り組んでいます。私はFacebookプラグインを使用して、これを使用してFacebookページの同類を表示しています:

<iframe src="//www.facebook.com/plugins/likebox.php?href=https%3A%2F%2Fwww.facebook.com%2Fpcclahore&amp;width=364&amp;height=220&amp;show_faces=true&amp;colorscheme=light&amp;stream=false&amp;border_color&amp;header=true" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:364px; height:220px;" allowTransparency="true"></iframe>

問題は、大学のサーバーで Facebook がブロックされているため、警告以外に何も表示されないことです。インターネットが利用できない (ローカルホスト) または Facebook にアクセスできないときに、Facebook プラグインの代わりに静止画像を表示することは可能ですか? このような:

if(Facebook accessible)
show Facebook pluging
else
<img src="images/fb.jpg" width="364" height="220">
4

4 に答える 4

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&amp;width=364&amp;height=220&amp;show_faces=true&amp;colorscheme=light&amp;stream=false&amp;border_color&amp;header=true" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:364px; height:220px;" allowTransparency="true"></iframe>'; // output IFRAME
于 2013-01-17T05:52:21.720 に答える
1

これには、サーバー側のコードではなく、クライアント側の JavaScript を使用する必要があります。www.facebook.comJavaScript を使用すると、画像が正常に読み込まれるかどうかを確認できます。そのため、 ( test page )から画像を読み込んで Facebook にアクセスできるかどうかを確認するために JavaScript を使用できます。

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();

src次に、それに応じて iframeの属性を設定できます。

onerror別の方法として、iframe 自体を配置することもできます (別のテスト イメージは使用しません)。ただし、これは機能しません。大学のコンテンツ フィルタリング システムは、エラーを示す HTTP ステータスを返しません。

于 2013-01-17T05:53:19.480 に答える
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
   }

 }
于 2013-01-17T05:27:30.477 に答える
-1

facebook が利用可能かどうかは fsockopen、php の関数で確認できます。

つまり、

   $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'>"

    }

私はそれが動作するかどうかを確認しませんでした。それを試してみてください。

于 2013-01-17T05:26:17.740 に答える