Сравнить ip-адрес в php

#php #mysql

#php #mysql

Вопрос:

Я создал таблицу в моем mysql, где я храню данные для входа пользователей. Мы сохраняем ip-адрес (как long2ip), имя пользователя, название сайта и время. Что я хотел бы сделать, так это проверить, зарегистрирован ли пользователь на сайте с более чем 2 разными IP-адресами.

Комментарии:

1. Можете ли вы опубликовать код, который вы используете для хранения имени пользователя и IP-адреса в базе данных? В противном случае мы можем дать только очень расплывчатые, общие ответы. это, конечно, звучит так, как будто это было бы очень легко сделать на PHP.

2. Я должен добавить, что перед тем, как я отредактировал вопрос, он просто спросил «это легко в PHP». Отсюда ответ «Да, это просто» и комментарий.

3. Проверка того, что пользователь вошел в систему с более чем 2 разных IP («зарегистрирован с 3 IP»), не то же самое, что сравнение IP («этот IP совпадает (или не совпадает) с этим IP»).

Ответ №1:

Это должно быть довольно просто, если у вас есть доступная версия, хранящаяся в базе данных. Какой-то непроверенный псевдокод:

 $longIPdb = ip2long($ipfromdb);
$longRemote = ip2long($_SERVER['REMOTE_ADDR']);

if ($longIPdb == $longRemote) echo "We're the same.";
else echo "We're from different IPs.";
  

Ответ №2:

Похоже, это должно быть сделано в SQL, а не PHP:

 SELECT COUNT(DISTINCT ip) WHERE username='username';
  

При необходимости это может быть дополнительно ограничено по времени ( AND time > NOW()-3600 ).
Результатом будет количество разных IP-адресов, которые данный пользователь имеет в вашей базе данных (за заданный период времени, если указано).