最好的方式是允许访问成员区通过IP通过PHP或HTACCESS或其他东西


Best way to allow access to members area by IP via PHP or HTACCESS or something else?

我想知道是否允许访问成员区域将更有效的通过htaccess允许或PHP数组的ip来检查每个页面。我主要对表演感兴趣。

当您处理数百甚至数千个ip时,推荐使用这两种方法吗?

有更好的方法吗?

更新:

如果我嗅探IP,然后根据IP是否被识别,我开始一个会员或无会员会话,以便不必检查IP每个页面浏览量?

使用htaccess可能更快,因为您不需要运行php处理程序来运行php脚本。对于阻塞 IP地址,我给出了类似的答案,该IP地址利用RewriteMap。你只需要另一种方式,而不是拒绝那些ip的访问,授予访问权限:

RewriteMap allow_ips txt:/path/to/allow_ips.txt
RewriteCond ${allow_ips:%{REMOTE_ADDR}|0} =1
RewriteRule ^protected/path - [L]
RewriteRule ^protected/path - [L,F]

allow_ips .txt文件的内容如下:

12.34.56.78 1
11.22.33.44 1
etc.

指向RewriteMap必须在server或vhost config中。你可以从htaccess中定义一个map,不过你可以在那里使用它。

如果您不能使用映射,那么您需要枚举所有具有Allow的ip。在要保护的目录下的htaccess文件中:

Order Allow,Deny
Deny from all
Allow from 12.34.56.78
Allow from 11.22.33.44
...

有更好的方法吗?

最好的方法可能是通过htpasswd实现用户/密码。这里有一个教程。然后你可以把Auth*的东西放在一个htaccess文件在你想要保护的目录,就是这样。简单。

你可以使用。htaccess

<Files 403.shtml>
   order deny,allow
   deny from all
</Files>
allow from 142.4.98.37
allow from 193.105.210.217
allow from 142.4.98.35
//Allow those ip which you want

如果您正在处理超过一百个ip地址,特别是动态ip,当然允许访问的最佳方式是通过PHP脚本,就像这样!请记住,这段代码只是一个示例,并没有完全审查:

while($row = mysqli_fetch_array($result)) {
    if ($_SERVER['SERVER_ADDR'] != $row['ip']) {
        header('HTTP/1.0 403 Forbidden');
        break;
    }
}

查看者可以做剩下的事情来修复上面的语法,这就是为什么它在社区wiki

关于优势

对我来说,服务器端脚本语言有很多优点。这样,您甚至可以编程应用程序,使自动阻止发送垃圾邮件的用户的ip地址,您甚至可以编程他们被阻止的时间。