PHP - 阻止IP 24小时

时间:2011-12-13 04:08:33

标签: php ip

我有一个PHP文件,我想收集人们的IP,然后阻止PHP文件继续,如果他们的IP在过去24小时内运行该文件。我尝试过使用cookies,但它一直给我“无法更改标题”的错误。此外,人们可以清除他们的饼干。基本上,它保留了运行php文件的每个人的IP,然后如果他们试图在24小时内访问它就会“回声”你可以在24小时内再次访问它“并且不会运行整个文件。然后他们就可以了24小时后再做一次。

5 个答案:

答案 0 :(得分:2)

每次查看页面时,请在删除超过24小时的条目后检查IP地址是否在数据库表中

// Purge records
mysql_query("DELETE FROM ip_table WHERE access_date < DATE_SUB(CURDATE(), INTERVAL 24 HOUR)");

$ip = $_SERVER['REMOTE_ADDR'];
$result = mysql_query("SELECT ip FROM ip_table WHERE ip = '$ip'");
if($result){
  die("You can access this again in 24 hours");
} 
else {
  $result = mysql_query("INSERT INTO ip_table (ip, access_date) VALUES ('$ip', NOW())");
}

但是,这将阻止所有使用共享连接的用户。最好是要求登录,然后阻止每个用户访问。

答案 1 :(得分:1)

我认为你可以更容易地拥有一个存储每个ip的最后访问时间的表,其结构如下:

Access

 - id          - int
 - ip_addr     - int
 - last_access - datetime

您从$_SERVER['SERVER_ADDR']中的IP地址转换为inet_pton()的整数值,并在该数据库表中进行简单的选择

答案 2 :(得分:1)

方法我可能会看到更多的工作:

IP禁止

<强>优点:

  • 将阻止具有该IP地址的所有浏览器
  • 相当容易设置

<强>缺点:

  • 可能会给NAT后面的人带来很多误报。
  • 用户可以移动到另一台计算机或以其他方式更改IP(代理)

缓存

<强>优点:

  • 您拥有其报告的浏览器的身份
  • 易于设置和部署

<强>缺点:

  • 很容易失败(删除cookie)

用户登录

<强>优点:

  • 您知道正在下载哪个帐户以及何时
  • 难以绕过帐户

<强>缺点:

  • 如果新帐户易于设置,可以轻松规避

注意,$_SERVER保存有关请求标头的IP地址和其他信息。

答案 3 :(得分:0)

您可以使用他们访问php文件的日期跟踪ip,并在24小时后尝试重新访问时更新此日期。

我希望这会有所帮助。

答案 4 :(得分:0)

这样的事情:

$_SESSION['REMOTE_ADDR'] can be stored in a database, compared against
err s/SESSION/SERVER
(rewriting session crap over here, have session on the brain)

更新: -

有用的链接

http://perishablepress.com/press/2007/07/03/how-to-block-ip-addresses-with-php/

http://forums.digitalpoint.com/showthread.php?t=67344