У меня есть эта настройка для регистрации количества неудачных попыток входа с разных IP-адресов. Наверное, ненужное сложное.
Настройка базы данных mysql:
CREATE TABLE login_attempts (
id int(20) NOT NULL auto_increment,
ip varchar(20) NOT NULL default '',
`time` datetime NOT NULL default '0000-00-00 00:00:00',
nr char(4) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM
# -------
поиск неудачных попыток входа в систему:
function ip()
{
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
$ip = ip();
$query = "SELECT `nr` from `login_attempts` WHERE `ip`='".$ip."' ";
$result = $conn->query($query);
$user = $result->fetch_assoc();
$failed_attempts = $user["nr"];
(... некоторый код ...)
В случае сбоя входа в систему:
if( $failed_attempts == 0 ){
$query = "INSERT INTO login_attempts (`ip`, `time`, `nr`) VALUES ('".$ip."', '".$time."', '1')";
$result = $conn->query($query);
if (!$result){ trigger_error("mysql error: ".mysql_errno($result) . ": " . mysql_error($result)); return 0; }
} else {
$query = "UPDATE login_attempts SET ip = '".$ip."', time = '".$time."', nr = nr + 1 ";
$result = $conn->query($query);
if (!$result){ trigger_error("mysql error: ".mysql_errno($result) . ": " . mysql_error($result)); return 0; }
}
Это как-то дает повторяющиеся записи в моей БД. Тот же ip, другой nr
.. Почему?