大家好.刚刚尝试通过PHP直接屏蔽IP的问题
在网上看了些说法.但是都没有成功.不知道哪位能帮忙看一下.
现在常用的有两种
1------------------------------------------------
<?php
//加IP访问限制
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$userip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
$userip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
$userip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
$userip = $_SERVER['REMOTE_ADDR'];
}
$ban_range_low=ip2long("217.0.0.0"); //ip段上
$ban_range_up=ip2long("217.255.255.255");//ip段尾
$ip=ip2long($userip]);
if ($ip>$ban_range_low && $ip<$ban_range_up)
{
print "Banned";
exit();
}
?>
这是直接屏蔽IP.经测试无法使用2----------------------------------------
<?php
error_reporting(E_ALL ^ E_NOTICE);// 分析 HTTP_ACCEPT_LANGUAGE 的属性
// 这里只取第一语言设置 (其他可根据需要增强功能,这里只做简单的方法演示)preg_match('/^([a-z\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
$lang = $matches[1];switch ($lang) {
        case 'zh-cn' :
                header('Location: '>http://cn.example.com/[/url]');
                break;
        case 'zh-tw' :
                header('Location: '>http://tw.example.com/[/url]');
                break;
        case 'ko' :
                header('Location: '>http://ko.example.com/[/url]');
                break;
        default:
                header('Location: '>http://en.example.com/[/url]');
                break;
}?>
这个是通过屏蔽浏览器的语言操作.可是也出现了无法访问的问题.不知道是否可以通过直接屏蔽客户访问端的WIN系统语言进行屏蔽?麻烦帮忙解决一下.谢谢.

解决方案 »

  1.   

    楼主 你到底想屏蔽 什么1.是屏蔽某些ip不让访问?那么你得获取准确ip
    2.你想屏蔽windouws的访问?? 那么通过ua 不过这毒不能达到完全屏蔽的目的,因为这些都可以伪造
      

  2.   

    我是想屏蔽整个系统语言的访问,例如英文和日文操作系统的访问者。因为通过屏蔽操作系统就不会错杀。而屏蔽IP可能会错杀。不过我是希望能够搞明白这两种都怎么样操作

    1.按操作系统语言屏蔽访问者
    2.按IP屏蔽访问者
    刚刚又测试了htaccess的方法屏蔽IP仍旧没搞出来.
      

  3.   

    <script type="text/javascript">
    sysLanguage=navigator.systemLanguage?navigator.systemLanguage:navigator.language;
    if(sysLanguage == 'zh-cn' || sysLanguage == 'zh-CN'){
    window.location.href='test.html';
    }
    </script> 
      

  4.   


    这个方法是针对浏览器的语言而并不是针对操作系统的语言设置,刚刚用CHROME测试过了.
    把CHROME的语言改为EN之后 网站仍旧可以访问.