Ваш запрос SELECT ip FROM blocked_ips WHERE id=1
не будет выбрать более одной строки, если идентификатор является основным ключом. Вы должны использовать SELECT ip FROM blocked_ips
(без идентификатора) вместо фактического массива данных.
Логика вы используете:
$deny = mysql_fetch_array(mysql_query('SELECT ip FROM blocked_ips WHERE id=1'),MYSQL_ASSOC);
может возвращать только одну строку данных и, таким образом, не имеет смысла объединяться с:
if (in_array ($_SERVER['REMOTE_ADDR'], $deny)) {
так mysql_fetch_array предназначен для вызывается в цикле, чтобы захватить все данные.
Я считаю, что логика вы пытаетесь писать целился петли следующим образом: while($row=mysql_fetch_array(..))
Но такое решение медленно ... Вы должны быть Выбор из базы данных на основе IP, как предложено VIDesignz ,
<?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;
}
?>
Buuuuuut, то mysql_*
функции амортизации. Вместо этого используйте mysqli или pdo.
Что происходит? Есть ли сообщение об ошибке? – bnahin
Почему вы запрашиваете 'WHERE id = 1'? – SimoV8
Это все, ничего не происходит. Я использовал свой собственный IP-адрес, и я не перенаправляюсь. –