Заносим введенные пользователем логин и пароль в переменные $login, если он пустой, то уничтожаем переменные:
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
Если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
if (empty($login) or empty($password))
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
}
Экранируем вводимые данные
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
$login = trim($login);
$password = trim($password);
Подключаюсь к базе, извлекаем ip, удаляем ip адреса тех кто ошибался позже 600сек
include ("config/bd.php");
mysql_query ("DELETE FROM oshibka WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(date) > 600");
Получаем количество неудачных попыток с данным ip, если их больше 4-х выводим сообщение
$result = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db);
$myrow = mysql_fetch_array($result);
if ($myrow['col'] > 4) {
exit("<br><h2><big><center>Вы набрали логин или пароль неверно 5 раз. Подождите 10 минут до следующей попытки.</center><big><h2>");
}
Получаем данные о введенном пользователе
$password =base64_encode(hash('whirlpool', $password, true) );
$result = mysql_query("SELECT * FROM accounts WHERE login='$login'",$db);
$myrow = mysql_fetch_array($result);
если пользователя с введенным логином и паролем не существует,то записываем ip пользователя с временем ошибки
if (empty($myrow['password']))
{
$select = mysql_query ("SELECT ip FROM oshibka WHERE ip='$ip'");
$tmp = mysql_fetch_row ($select);
Если пользователь уже есть в таблице, то приплюсовываем количество не правильного ввода. Вот эта часть судя по всему работает не верно.
if ($ip == $tmp[0]) {
$result52 = mysql_query("SELECT col FROM oshibka WHERE ip='$ip'",$db);
$myrow52 = mysql_fetch_array($result52);
$col = $myrow52[0] + 1;
mysql_query ("UPDATE oshibka SET col=$col, date=NOW() WHERE ip='$ip'");
}
Если пользователь ошибся и его еще нет в таблице, то добавляем
else {
mysql_query ("INSERT INTO oshibka (ip,date,col) VALUES ('$ip',NOW(),'1')");
}
exit ("Извините, введённый вами логин или пароль неверный. Доступно всего 5 попыток.");
}
если пароли совпадают, то запускаем пользователю сессию! Дальше все работает нормально
else {....
Ошибок нет, проблема - вместо добавления +1 в столбик col к ip который уже ошибался, создается новая запись с таким же ip.