Для реализации бана по IP в PHP с проверкой наличия IP-адреса в базе данных и запретом повторной регистрации с выводом ошибки, можно использовать следующий код:
```php
<?php
// Подключение к базе данных
$host = 'localhost';
$dbname = 'your_database';
$username = 'your_username';
$password = 'your_password';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
} catch (PDOException $e) {
die("Ошибка подключения к базе данных: " . $e->getMessage());
}
// Получение IP-адреса пользователя
$ip = $_SERVER['REMOTE_ADDR'];
// Проверка наличия IP-адреса в базе данных
$stmt = $pdo->prepare("SELECT * FROM banned_ips WHERE ip_address = :ip");
$stmt->bindParam(':ip', $ip);
$stmt->execute();
if ($stmt->rowCount() > 0) {
die("Ваш IP-адрес заблокирован.");
}
// Проверка наличия IP-адреса при регистрации нового пользователя
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// Получение данных формы регистрации
$username = $_POST['username'];
$email = $_POST['email'];
// Проверка наличия IP-адреса в базе данных
$stmt = $pdo->prepare("SELECT * FROM users WHERE ip_address = :ip");
$stmt->bindParam(':ip', $ip);
$stmt->execute();
if ($stmt->rowCount() > 0) {
die("Вы уже зарегистрированы.");
}
// Добавление нового пользователя в базу данных
$stmt = $pdo->prepare("INSERT INTO users (username, email, ip_address) VALUES (:username, :email, :ip)");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':ip', $ip);
$stmt->execute();
echo "Пользователь успешно зарегистрирован.";
}
?>
```
В данном коде сначала происходит проверка наличия IP-адреса в таблице `banned_ips`. Если IP-адрес найден, выводится сообщение о блокировке. Затем, при попытке регистрации нового пользователя, происходит проверка наличия IP-адреса в таблице `users`. Если IP-адрес уже присутствует в базе данных, выводится сообщение о том, что пользователь уже зарегистрирован. Если IP-адрес не найден, то происходит добавление нового пользователя в базу данных.
Не забудьте создать таблицы `banned_ips` и `users` в вашей базе данных с необходимыми полями.