Closed. This question is
off-topic。它当前不接受答案。
想改善这个问题吗?
Update the question,因此它是
on-topic,用于堆栈溢出。
5年前关闭。
所以我有这段代码
here(来自phpacademy),用于手动添加尝试访问我的论坛的垃圾邮件机器人的ips。然后,我将获得此代码,这将防止ips访问我的页面,因为它是“标头”。
<?php
$deny = array("1.1.1.9", "9.9.9.9", "333.333.333");
if (in_array ($_SERVER['REMOTE_ADDR'], $deny)) {
header("location: http://www.google.com/");
exit();
}
?>
我想要的是让该数组查找我的SQL表“ first_name”(我懒得将名称更改为ip)。我(您可以告诉:)是php和mysql的新手,我敢肯定这是一件简单的事情,有人会向我发送指向该页面的链接,其中包含操作方法...
编辑1:
我正在尝试以下代码:
mysql_connect("localhost", "mydatabase", "mydatabasespassword") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());
$ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
$query = "SELECT * FROM first_name WHERE first_name='$ip'";
$result = mysql_query($query);
if (mysql_num_rows($result) > 0) {
echo "Ip is already in database";
} else {
echo "Ip is not in database";
}
但我得到“警告:mysql_num_rows()期望参数1为资源,在第8行的/path/7.php中给出布尔值
IP不在数据库中”
编辑2:
修复后,我正在执行SELECT * FROM fieldinsteadoftable where field = ...等。
从长远来看,进行一些错误检查将对您有所帮助。尝试此操作以查看数据库是否给您任何错误。
mysql_query的$ result返回可能是'false',因为查询字符串中有错误或数据库表引用不匹配。因为您没有给mysql_num_rows一个资源,所以它正确地抛出了错误。您需要先检查$ result是否有错误,然后再继续。
注意:为方便起见,不推荐使用mysql_函数,您需要移开它们。请参阅PHP文档http://us3.php.net/manual/en/function.mysql-query.php
mysql_connect("localhost", "mydatabase", "mydatabasespassword") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());
$ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
$query = "SELECT * FROM first_name WHERE first_name='$ip'";
$result = mysql_query($query);
// ADD ERROR CHECKING HERE
if (!$result) {
var_dump(mysql_error());
return;
}
if (mysql_num_rows($result) > 0) {
echo "Ip is already in database";
} else {
echo "Ip is not in database";
}