sql数据库中的PHP ip检查数组?
所以我有这段代码(来自phpacademy),我用它来手动添加尝试访问我的论坛的垃圾邮件机器人的IP。然后我有了这段代码,它将阻止IP访问我的页面,因为它在标题中是“必需的”sql数据库中的PHP ip检查数组?,php,mysql,sql,post,ip,Php,Mysql,Sql,Post,Ip,所以我有这段代码(来自phpacademy),我用它来手动添加尝试访问我的论坛的垃圾邮件机器人的IP。然后我有了这段代码,它将阻止IP访问我的页面,因为它在标题中是“必需的” <?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/");
<?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();
}
?>
但我得到了“警告:mysql_num_rows()期望参数1是资源,布尔值在第8行的/path/7.php中给出
Ip不在数据库中“
EDIT2:
修好了,我在做SELECT*FROM fieldinsteadoftable,其中field=。。。等等。从长远来看,一点错误检查将对您有所帮助。尝试此操作以查看数据库是否出现任何错误 mysql_查询返回的$result可能为“false”,因为查询字符串中存在错误或数据库表引用不匹配。因为您没有为mysql_num_行提供资源,所以它正确地抛出了错误。在继续之前,您需要检查$result是否有错误 注意:为了说明这一点,mysql_u函数已被弃用,您需要远离它们。请参阅PHP文档
好。。。从哪里开始$_服务器['REMOTE_ADDR']不是一个数组,那么为什么要在它上面使用in_数组呢$_服务器是一个数组,但您正在向in_数组中输入一个返回字符串的数组的键。之后,您是否要求mysql查询循环查找IP地址?你已经有数据库了吗?你尝试了什么?哦,对不起,我希望$deny是我数据库中包含IP的数组。是的,我有一个数据库(msql),可以连接到它。我需要代码扫描“first_name”(ip表)表中列出的值,并对照远程用户进行检查_ADDR@Rottingham我建议您参考_array中的
文档。因为参数是:bool In_array(mixed$needle,array$haystack[,bool$strict=FALSE])
OP正在适当地使用In_array
。@Jessica我完全倒读了这一行。我靠4小时的睡眠生活所得到的。谢谢,您将不得不做出努力,并展示您用于查看数据库的代码。很抱歉,我的评论被上面的其他评论淹没了,我已经弄明白了。既然你是唯一的答案,我就给你:)。
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_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";
}