阻止用户在php中使用他们的ip地址

时间:2015-07-14 14:29:28

标签: php

实际上,除了本地托管的服务器之外,我没有使用php的任何实际经验。我正在关注视频教程以了解php,并且此代码可以阻止来自网站的特定ip。我想知道的是,这是否适用于拥有动态IP地址的用户?而且,这是阻止用户的正确方法吗?如果你能解释更多关于阻止用户的实际方面,我很高兴。谢谢!

<?php  
$http_client_ip = $_SERVER['HTTP_CLIENT_IP'];
$http_x_forwarded_for = $SERVER['HTTP_X_FORWARDED_FOR'];
$remote_address = $SERVER['REMOTE_ADDR'];

if (!empty($http_client_ip)){
   $ip_address = $http_client_ip;
} elseif (!empty($http_x_forwarded_for)) {
   $ip_address = $http_x_forwarded_for;
} else {
   $ip_address = $remote_address;
}

//block list contains all the IPs that should be blocked.
foreach ($block_list as $block) {
  if ($block == $ip_address){
    die();
  }
}
?>

2 个答案:

答案 0 :(得分:3)

可以使用cPanel中的IP拒绝管理器或在.htaccess文件中添加允许或拒绝代码来限制访问者访问您的站点。 语法如下:

Allows IP 122.102.1.2 access to your website.

Allow from 122.102.1.2

Denys IP 25.122.6.3 access to your website.

Deny from 25.122.6.3 

两者合并为,

Order deny,allow
Deny from all
Allow from 203.25.45.2
Deny from unwanted-domain.com

答案 1 :(得分:0)

不,不。它需要他的IP并检查它是否在阻止列表中。一旦它改变,他就不会被阻挡了。

您可以尝试阻止更大范围的IP。 例如:

 $targetAddr = "123.123..*..*";  //yes is two dots

//this code will match any class of 123.123.x.x, 
//you can also do "123.123.123..*" to do anything that is 123.123.123.x

if (ereg($targetAddr, $_SERVER['REMOTE_ADDR'])) {
    //remote address match, do something or don't do anything
} else {
   //do whatever you want to address that doesn't match
}

老实说,我不认为这是阻止用户的最佳方式。这可能会阻止其他用户而不是您正在尝试的用户。