#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-адресов, которые данный пользователь имеет в вашей базе данных (за заданный период времени, если указано).