如何从php中检测阻止的地址

时间:2011-04-28 21:53:27

标签: php javascript

所以这是我的问题;我们正试图在我们的网站上设置facebook like和twitter tweet按钮,但是当Facebook和Twitter在他们的计算机上被阻止时,它会导致浏览器无响应。 所以我想做的是检测facebook或twitter是否被阻止,然后删除这些计算机的按钮,同时允许所有其他人加载它们。

这可能是在php或javascript中吗?

如果链接被阻止,我无法找到有关测试的任何信息。

3 个答案:

答案 0 :(得分:2)

您可以尝试让Javascript从twitter / facebook加载img或其他资源并查看它是否实际加载,然后让一些AJAX告诉您的服务器它无法正常工作。

但就PHP而言,它没有办法告诉客户端机器能够建立什么样的连接。

答案 1 :(得分:2)

您可以在页面上放置两个隐藏的图像,然后即时添加相似的按钮 这样的事情应该有效:

<img style="display:none;"
  onload="user_can_access_facebook()"
  onerror="no_access_to_facebook()"
  src="http://static.ak.fbcdn.net/rsrc.php/v1/yp/r/kk8dc2UJYJ4.png" />

javascript函数user_can_access_facebook()应该在DOM中添加like-button。

http://static.ak.fbcdn.net/rsrc.php/v1/yp/r/kk8dc2UJYJ4.png 是登录页面上Facebook徽标的网址。这可能是不是静态链接,因此您可能需要找到一些其他静态资源来检查。)

对于Twitter,你也应该这样做。

修改
我把一个小POC放在一起:

<html>
  <head>
    <script language="javascript" type="text/javascript">
      function user_can_access(sitename) {
        var siteDiv = document.getElementById(sitename + '_access');
        siteDiv.innerText = "You have access to " + sitename;
      }

      function no_access(sitename) {
        var siteDiv = document.getElementById(sitename + '_access');
        siteDiv.innerText = "You do NOT have access to " + sitename;
      }
    </script>
  </head>
  <body>
    <img src="http://static.ak.fbcdn.net/rsrc.php/v1/yp/r/kk8dc2UJYJ4.png"
      onload="user_can_access('Facebook')"
      onerror="no_access('Facebook')"
      style="display:none;" />
    <img src="http://support.twitter.com/images/twitter-logo-no-bird.png"
      onload="user_can_access('Twitter')"
      onerror="no_access('Twitter')"
      style="display:none;" />

    <div id="Facebook_access"></div>
    <div id="Twitter_access"></div>
  </body>
</html>

要在本地试用,只需阻止访问上面的相应域(static.ak.fbcdn.net  和support.twitter.com) 如前所述,您可能需要找到一些静态的其他资源来检查。如果图像的网址在Facebook和Twitter上发生变化,那么您必须在代码中更改它。

答案 2 :(得分:0)

要在PHP中进行管理,您需要首先检测他们是否在加载页面上使用JavaScript图像方法进行访问,然后执行javascript重定向

document.location="/index.php?TwitterBlocked=true";

根据get参数,您可以选择嵌入代码以显示按钮。

然而,整个方法都很难看。这些社交网站提供的按钮代码在整个网络中使用,如果您将它们作为文档加载的最后一点JavaScript加载,那么不应该对您的网站造成性能影响。