-1

我目前正在尝试在 PHP 和 MYSQL 中创建一个 IP-BAN 系统,但是我对 MySQL 语法不是很熟悉。到目前为止,这是我的代码,它返回最后一个“哦”。代码:

<?php

    $ip = '127.0.0.1';

    mysql_connect('127.0.0.1', 'user', 'pass');
    mysql_select_db('IP');

    if(mysql_query("SELECT IP FROM IP WHERE IP='127.0.0.1'") == 1){
        echo "If you get this, it may or may not be working";
    }
    elseif(mysql_query("SELECT IP FROM IP WHERE IP='127.0.0.1'") == FALSE){
        echo "If you get this, it means that your IP was not found in the database";
    }
    else{
        echo "Uh-oh!";
    }

我的SQL数据库名是IP,表名是IP,字段是IP和ban。

我如何让这段代码告诉我给定的 IP 是否在表中?

4

2 回答 2

5

mysql_query()FALSE如果查询因语法错误而失败,将返回,但FALSE 如果未找到该值,则不会返回。相反,这两种情况都将返回结果资源。您必须检查 的值mysql_num_rows()以确定是否返回了一行。

// Do the query and test for errors:
$result = mysql_query("SELECT IP FROM IP WHERE IP='127.0.0.1'");
if (!$result ) {
  // Query error
  echo mysql_error();
}
// Query was successful - test if any rows were found
else {
  if (mysql_num_rows($result) > 0) {
     //the IP was found
  }
  else {
     // the IP was NOT found (num rows === 0)
  }
}

免责声明:

现在,关于IP封禁的做法……一般不建议这样做。学校或企业网络,或任何通过其 ISP 进行 NAT 的人(如许多移动网络)在许多用户(可能甚至数千)之间共享一个公共 IP。您无法通过 IP 地址可靠地识别单个用户,更糟糕的是,您可能会阻止合法用户使用您的 Web 应用程序。

最后,关于mysql_*()函数本身。 PHP 开发社区已经开始计划弃用这些旧函数,因为它们不鼓励安全编码实践。相反,我(以及这​​里的大多数其他人)建议您熟悉使用准备好的语句的现代 API。我更喜欢PDO,但MySQLi也是一种选择。

于 2012-06-11T23:26:56.600 回答
-1

mysql_query() 如果成功则返回一个资源。使用此页面上的示例:

http://us.php.net/manual/en/mysqli.query.php

于 2012-06-11T23:26:36.833 回答