@1211232123
Кодер, который пишет свой проект.

Не работает бан по ip в php, что делать?

Всем привет. Когда пишу сайт, сталкиваюсь с этой проблемой. Хочу задать, чтобы код проверял есть ли в базе данных такой ip и если он есть, запретить регистрацию с ошибкой "Вы уже зарегестрированы". Когда ввёл этот код, у меня не получилось организовать это (просто даёт создать кучу аккаунтов на одном ip адресе).
session_start();
$ip = $_SERVER['REMOTE_ADDR']; //-- узнаем ip адресс
mysqli_query($подключение, "SELECT * FROM `наша дб` WHERE `userip` = '$useip'");  //--Получаем ip зарегестрированных пользователей
if(!$useip == $ip) {
mysqli_query($подключение, "INSERT INTO `наша дб` ..."); //-- Вставляем данные с форм, знаю что надо продолжить, но накинул просто для примера.
header("Location: Ссылка на страницу входа");
} else {
$_SESSION['msg'] = "Вы уже зарегестрированы";
header("Location: наша ссылка на страницу регистрации");
}

И это не работает. Если это не правильно, подскажите пожалуйста, как реализовать, чтобы пользователи могли регестрироваться только 1 раз.
  • Вопрос задан
  • 538 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

$ip = $_SERVER['REMOTE_ADDR'];
$result = $mysqli->query("SELECT * FROM `наша таблица` WHERE `userip` = '$ip' LIMIT 1");
if ($result->num_rows > 0) {
  echo 'Сорян, такой айпишник уже есть в базе';
} else {
  echo 'Ok, регистрирую вас';
}


PS
По просьбам гуру настоятельно рекомендую к прочтению
Как правильно использовать mysqli
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Эммм, ошибка на столько тупая, что даже не верится...

Подумайте, во время выполнения запроса чему равна используемая в нём переменная $useip?

И дальше, идёт сравнение $useip с другой переменной $ip, что в этом if() с чем сравнивается?

P.S. Да банальнейший var_dump($ip, $useip) перед if() раскроет всю глубину глупости!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы