Php 阻止数据库中的IP

Php 阻止数据库中的IP,php,mysql,Php,Mysql,我想阻止我创建的数据库中的IP,我尝试了以下方法: <?php $deny = mysql_fetch_array(mysql_query('SELECT ip FROM blocked_ips WHERE id=1'),MYSQL_ASSOC); if (in_array ($_SERVER['REMOTE_ADDR'], $deny)) { header("location: http://www.google.com/"); exit(); } ?> 我做错了什么

我想阻止我创建的数据库中的IP,我尝试了以下方法:

<?php
$deny = mysql_fetch_array(mysql_query('SELECT ip FROM blocked_ips WHERE id=1'),MYSQL_ASSOC);
if (in_array ($_SERVER['REMOTE_ADDR'], $deny)) {
   header("location: http://www.google.com/");
   exit();
}
?>

我做错了什么?

为什么不尝试选择ip地址本身呢

 $user_ip = $_SERVER['REMOTE_ADDR'];

 $query = 'SELECT ip FROM blocked_ips WHERE ip=$user_ip';

如果得到的结果大于0,则该结果存在于数据库中。

添加到前面的答案中,您可以使用MySQL选择IP地址并检查返回的行数

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "SELECT ip FROM blocked_ips WHERE ip='$ip'";
if (mysql_num_rows(mysql_query($sql))>0) {
   header("location: http://www.google.com/");
   exit();
}
?>
如果id是主键,则查询“从阻止的ip中选择ip”,其中id=1不会选择多行。对于实际的数据数组,应该使用没有id的SELECT ip FROM blocked_ip

您正在使用的逻辑: $deny=mysql\u fetch\u arraymysql\u query'SELECT ip FROM blocked\u ips WHERE id=1',mysql\u ASSOC; 只能返回一行数据,因此与以下内容组合没有意义: 如果在_数组$_服务器['REMOTE_ADDR']中,$deny{ 因为mysql_fetch_数组是在一个循环中被调用来获取所有数据的

我相信您试图编写的逻辑旨在实现这样的循环: 而$row=mysql\u fetch\u数组

但这样的解决方案很慢……您应该按照VIDesignz的建议,从基于ip的数据库中进行选择

<?php
$ip=mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
$query="SELECT * FROM blocked_ips WHERE ip='$ip'";
$result=mysql_query($query);
if(mysql_num_rows($result)>0){
   header("location: http://www.google.com/");
   exit;
}
?>

Buuuuut,mysql_*函数已贬值。请使用或。发生了什么事?是否有错误消息?为什么要用id=1进行查询?就是这样,什么都没有发生。我使用了自己的IP,没有重定向。@SimoV8因为我只想用该id阻止数据库中的IP。您需要匹配IP,而不是id。请查看我的答案,以了解最简单的方法。这当然是假设您的表在ip列中有ip地址。我现在理解了,并尝试了您提供的代码,但仍然没有发生任何事情。我似乎无法再次找出我做错了什么。可能您收到的警告被贬低,溅到用户的浏览器上,导致标题已经出现尝试更改位置标头时发送错误。可能错误报告0;会有帮助。如果没有,请一次调试一段代码。可能查询出错,是否成功连接到数据库并选择要处理的数据库?如果!$result{echo mysql\u error;}如果没有成功,请确保在phpmyadmin中为给定的ip地址运行查询:echo$\u SERVER['REMOTE\u ADDR'];确保echo mysql_num_rows$result;为阻止的ip返回1。我按照您所说的做了验证。我尝试回显从数据库中选择的ip,它显示“Resource id 9”,而不是实际的ip。这就是它不起作用的原因。我想,我该如何解决这个问题?不管怎样,我设法让它起作用了!:D谢谢。这一切都不起作用呃,什么都没发生,但是我理解代码。