Posted 30 марта, 20195 yr comment_156485 Здравствуйте! Хочу найти возможные дубли пользователей, для этого хотелось бы отобразить не уникальные ИП адреса при входе/регистрации. В админке можно просмотреть конкретный ИП адрес и кто с него регился/входил, а так что бы списком именно неуникальных не нашёл. Может быть есть какой-либо плагин? P.S. Да, я понимаю, что пользователи могут быть за одним NATом, тогда ИП будет совпадать, либо один и тот же ИП может быть выдан в разное время разным пользователям и ничего сверх необычного в этом нет.
30 марта, 20195 yr comment_156488 SQL запросом можно посмотреть пользователи которые использовали одинаковые IP SELECT i.member_id, i.ip_address FROM core_members_known_ip_addresses i INNER JOIN core_members_known_ip_addresses z ON i.ip_address=z.ip_address AND i.member_id!=z.member_id GROUP BY i.ip_address, i.member_id
30 марта, 20195 yr Author comment_156492 Для начала воспользовался сортировкой по ИП в списке пользователей, тогда одинаковые будут рядом, но когда пользователей много понял, что просматривать все очень долго, тогда экспортировал всех пользователей (при экспорте пользователей можно выбрать нужные поля) в Эксель, дальше выделяем колонку с ИП адресами, в верхней менюшке Главная->Группа "Стили"->Условное форматирование->Правила выделения ячеек->Повторяющиеся значения. Таким макаром все повторяющиеся подсветятся, ну а после делаем сортировку Главная->Группа "Редактирование"->Сортировка и фильтры->Сортировать от А до Я и теперь повторяющиеся ИПшники будут рядом и можно быстро глазами пробежать.
30 марта, 20195 yr comment_156494 А можно просто выполнить sql запрос и посмотреть только пользователей с повторяющемся ip. И извращения с экспортом пользователей тоже лишнее, это решается обычным sql запросом SELECT m.name, m.member_id, m.ip_address FROM core_members m LEFT JOIN core_members z ON m.ip_address=z.ip_address WHERE m.member_id!=z.member_id GROUP BY ip_address, member_id Таким образом можно выбрать пользователей которые использовали одинаковые IP при регистрации. Статистика по каждому IP использующегося больше одного раза SELECT ip_address, COUNT(*) as count FROM core_members GROUP BY ip_address HAVING count > 1
31 марта, 20195 yr comment_156495 17 hours ago, siv1987 said: А можно просто выполнить sql запрос и посмотреть только пользователей с повторяющемся ip. И извращения с экспортом пользователей тоже лишнее, это решается обычным sql запросом SELECT m.name, m.member_id, m.ip_address FROM core_members m LEFT JOIN core_members z ON m.ip_address=z.ip_address WHERE m.member_id!=z.member_id GROUP BY ip_address, member_id Таким образом можно выбрать пользователей которые использовали одинаковые IP при регистрации. Статистика по каждому IP использующегося больше одного раза SELECT ip_address, COUNT(*) as count FROM core_members GROUP BY ip_address HAVING count > 1 Хех, верхний запрос достаточно суровый: долго грузило, и в итоге выдало 504 Gateway Time-out (nginx) без отображения результатов. Но скорее всего потому, что у меня у очень многих пользователей стоит в ip_address 127.0.0.1. Вопрос: как-то можно в том SQL запросе поставить условие "КРОМЕ вывода пользователей с ip_address 127.0.0.1", siv1987 ?
31 марта, 20195 yr comment_156496 Забыл предупредить, действительно первый запрос довольно суровый на таблице с большим количеством записей. Более оптимизированный вариант этого запроса SELECT i.member_id, i.ip_address FROM ( SELECT member_id, ip_address FROM core_members_known_ip_addresses GROUP BY ip_address, member_id ) as i INNER JOIN ( SELECT member_id, ip_address FROM core_members_known_ip_addresses GROUP BY ip_address, member_id ) as z ON i.ip_address=z.ip_address AND i.member_id!=z.member_id GROUP BY i.ip_address, i.member_id Исключить пользователей с ip 127.0.0.1 SELECT i.member_id, i.ip_address FROM ( SELECT member_id, ip_address FROM core_members_known_ip_addresses GROUP BY ip_address, member_id ) as i INNER JOIN ( SELECT member_id, ip_address FROM core_members_known_ip_addresses GROUP BY ip_address, member_id ) as z ON i.ip_address=z.ip_address AND i.member_id!=z.member_id WHERE i.ip_address!='127.0.0.1' GROUP BY i.ip_address, i.member_id и вариант с выведением имени пользователя SELECT m.name, i.member_id, i.ip_address FROM ( SELECT member_id, ip_address FROM core_members_known_ip_addresses GROUP BY ip_address, member_id ) as i INNER JOIN ( SELECT member_id, ip_address FROM core_members_known_ip_addresses GROUP BY ip_address, member_id ) as z ON i.ip_address=z.ip_address AND i.member_id!=z.member_id LEFT JOIN core_members m ON i.member_id=m.member_id GROUP BY i.ip_address, i.member_id
31 марта, 20195 yr comment_156497 И небольшая статистика сколько пользователей использовали один IP SELECT ip_address, COUNT(*) as count FROM ( SELECT member_id, ip_address FROM core_members_known_ip_addresses GROUP BY ip_address, member_id ) as i GROUP BY ip_address HAVING count > 1 ORDER BY count DESC alexis , прошу не цитировать сообщения целиком с запросами, трудно после этого ориентироваться в теме, да и читать такую тему портянку не очень приятно.
31 марта, 20195 yr comment_156509 Для плагина нужна обертка, продуманная структура, а составлять sql запросы многого не требуется.
1 апреля, 20195 yr comment_156514 Оно того стоит? У большинства idsl с динамическим ip, также некоторые сидят под общим ip (в организациях, например).
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.