Как заблокировать пользователя после 3 попыток входа в систему и сохранить его в базе данных? Я уже добавляю два столбца в таблицу пользователя, один для числа попыток входа и второй, для даты и времени последнего входа. Пожалуйста, помогите мне, как это сделать. Я не очень хорош в PHP.Заблокировал пользователя после 3 попыток в PHP?
Благодаря
Вот мой login.php
session_start();
$ipaddress = '';
if (getenv('HTTP_CLIENT_IP'))
$ipaddress = getenv('HTTP_CLIENT_IP');
else if(getenv('HTTP_X_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_X_FORWARDED_FOR');
else if(getenv('HTTP_X_FORWARDED'))
$ipaddress = getenv('HTTP_X_FORWARDED');
else if(getenv('HTTP_FORWARDED_FOR'))
$ipaddress = getenv('HTTP_FORWARDED_FOR');
else if(getenv('HTTP_FORWARDED'))
$ipaddress = getenv('HTTP_FORWARDED');
else if(getenv('REMOTE_ADDR'))
$ipaddress = getenv('REMOTE_ADDR');
else
$ipaddress = 'UNKNOWN';
$loginDate = date("Y-m-d H:i:s");
$Error ="";
$successMessage ="";
if (isset($_POST['submit'])){
if (!($_POST['cnumber'] == "" && $_POST['password'] == "")){
$cnumber=$_POST['cnumber'];
$password= sha1($_POST['password']);
$cnumber = filter_var($cnumber, FILTER_SANITIZE_NUMBER_INT);
if (filter_var($cnumber, FILTER_VALIDATE_INT)){
$con=mysqli_connect("localhost","root","","users");
$result = mysqli_query($con, "SELECT * FROM users WHERE contractNumber='$cnumber' AND password='$password'");
$data = mysqli_num_rows($result);
if($data==1){
$_SESSION['login_user']=$cnumber;
mysqli_query($con, "INSERT INTO `users`.`logs`(`contractNumber`, `lastLogin`, `ipAddress`) VALUES ('$cnumber', '$loginDate', '$ipaddress')");
header('Location: profile.php');
} else {
$Error ="Invalid Contract Number or Password.";
mysqli_query($con, "UPDATE users SET loginAttempt = loginAttempt + 1 WHERE contractNumber = '$cnumber' ");
print_r(mysqli_affected_rows($con));
}
mysqli_close($con);
} else {
$Error ="Invalid Contract Number.";
}
} else {
$Error ="Contract Number or Password is Empty.";
}
}
Сохраните количество попыток входа в сеанс. После того, как это значение передано, больше не отображается форма входа в систему ... Альтернативно/дополнительно, если один раз сеанс превысит лимит, не подтвердите свою учетную запись в БД и попросите их связаться с администратором для доступа. – chris85
@ chris85 как это сделать? Я плохо разбираюсь в php. ты можешь помочь мне с этим? – User014019
Не храните # попыток в сеансе. Затем бот может просто игнорировать файлы cookie сеанса и продолжать попытки без блокировки. Или сохраните неудачные попытки входа в базу данных по IP-адресу или номеру контакта (в зависимости от того, хотите ли вы заблокировать учетную запись или IP-адрес). – drew010