Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 2.x > vBulletin 2.x Full Releases
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
Paranoid dupe user buster when moderating Details »»
Paranoid dupe user buster when moderating
Version: 1.00, by Jawelin Jawelin is offline
Developer Last Online: May 2003 Show Printable Version Email this Page

Version: 2.2.x Rating:
Released: 03-18-2002 Last Update: Never Installs: 35
 
No support by the author.

Hi.
I wrote this hack time ago to address my own needs to findout dupe users when they register.
Now I published it and hope could be useful to someone...

This hack, basically does this:
when there are new users to activate (Admin awaiting moderation, usergroup=4), the Admin can press the link 'Dupe matches grid' in AdminCP just below the user list. A new window will appear with the list of pending users followed by a complete list of possible duplicates (configurable max number, default 25 per user).

Note: you must have user moderation enabled, of course...

Each user is listed with userid, username, password, email, ipaddress, posts, lastlogin, etc..
The dupe matches are found analyzing
- similar usernames,
- similar emails,
- same passwords (I know it's md5 hashed, but... just in case... )
- similar ip address
- cross matching username and email account (without hostname)
Each possible match is evidenced in bold.

Affinities are found with a variation of levenshtein() and metaphone() php functions.
Tolerance are configurable and even is managed a correction needed on shortest words and or words containing number digits, which otherwise would raise a lot of false matches.
I put that config at the top of function, you can fine tune yourself, but max values like '1' aren't too bad and enough to find most common dupes ... Higher values could return too many false affirmatives.

Thanks to Dlst who sometime ago published something similar but involving only the username.
  • Very very simple to apply.
  • Involves only one php file. No templates.
  • Manages almost all user characteristics.
  • Visible only to admins (AdminCP).
  • Leave the admin to decide what should do: delete, email, track, and so on...
  • The hack, once installed, is itself facultative. You can decide to search dupes or not, and in case refresh the awaiting list on the main AdminCP page...
Screenshots are impossible as there should be a list of horizontal black lines covering user data for obvious privacy reasons ...
Just install it in one minute and give a look yourself

Let me know any problem (even I've been using for about three months...)
Bye.

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #2  
Old 03-19-2002, 11:15 AM
JDD JDD is offline
 
Join Date: Oct 2001
Posts: 11
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

ahh first reply to this nice hack..
This is somthing I have been looking for because we don't allow our users to register multiple accounts ...

I will try it out ASAP...

thx

JDD
Reply With Quote
  #3  
Old 03-19-2002, 11:43 AM
Overgrow's Avatar
Overgrow Overgrow is offline
 
Join Date: Nov 2001
Posts: 320
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

How about a version that would let us view this for new registrations-- some boards don't have user moderation enabled but I'd like to see the data for new handles that register anyway. Thanks, nice use of the comparison functions.
Reply With Quote
  #4  
Old 03-19-2002, 11:59 AM
JDD JDD is offline
 
Join Date: Oct 2001
Posts: 11
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

ok just installed it.. and here are my comments on it:
  • you use loginlog.php for resolving the IP. I don't have this function on my Board (don't know if it may be another Hack) I replaced loginlog.php with adminlog.php and now it works.
  • I have 100+ users in moderation queue - when running the script i get a timeout error :
    Fatal error: Maximum execution time of 30 seconds exceeded in /admin/db_mysql.php on line 151

    seems that this script cannot handle this amount of users

another question I have is how the values are compared to eachother? The results it outputs don't seem to be that identically to me. It prints some lines in bold.. are these values ment to be nearly indentically?

JDD
Reply With Quote
  #5  
Old 03-19-2002, 12:21 PM
Jawelin Jawelin is offline
 
Join Date: Nov 2001
Posts: 557
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

@ Overgrow: well; one of the first step of the added action is to search for all users in group 4. Then it will compare each of them to all other users (including those in group 4, except the user itself... )
It should be easy to make this check complex, instead of m*(n-1) (m new members, n all users) something like n*(n-1).... But definetively I don't think php accessing mysql will accept such a high load and most probably you'll get a timeout error.

@ JDD:
- sorry for the mistake: loginlog.php comes from another my own hack and forgot to put that code into user.php. Hwr it simply calls the gethostbyaddr() php function against the given IP. ASAP I'll post the right code for that link.
- actually I think timeout problems couldn't be solved unless introducing a 'pagination' for the moderating members. I.e. for instance to select only 20-30 new users at once and then recycle. Till now I always completed my Admin homeworks day by day, so...
- in normalfont is printed the user under examination; in smallfont all the possible matches. Then in bold is highlighted the exact field which made positive the match.
Probably you could notice that on shortest words (or those with few alphabetics, the same for levensthein function...) you had many matches. I found that's is phisiologic for the php function's nature and tried to make some correction, but a minded-eye is the best one. This reason, all the matches are displayed and you have to decide (simply your are given all the informations to do that)



Bye
Reply With Quote
  #6  
Old 03-19-2002, 12:40 PM
Jawelin Jawelin is offline
 
Join Date: Nov 2001
Posts: 557
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally posted by Jawelin
- sorry for the mistake: loginlog.php comes from another my own hack and forgot to put that code into user.php. Hwr it simply calls the gethostbyaddr() php function against the given IP. ASAP I'll post the right code for that link.
Corrected the reference for the IPs. Now it links to user.php itself (user.php?s=&action=doips&ipaddress=....) to find all the user with that IP.

Please, re-download the attachment, if done before this post.
Thanks.
Bye


P.S.: actually the resolve IP function is already made within standard vb php files. The above link, if you prefer, could be:
adminlog.php?s=&action=resolveip&ip=....
Wysiwyg!
:rambo:
Reply With Quote
  #7  
Old 03-19-2002, 03:17 PM
psico psico is offline
 
Join Date: Oct 2001
Location: Buenos Aires, Argentina
Posts: 117
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Very useful hack!!
Thanks!
Reply With Quote
  #8  
Old 03-20-2002, 10:15 PM
CoolaShacka CoolaShacka is offline
 
Join Date: Dec 2001
Posts: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This Hack don't work for me.
IE can't find user.php?action=finddupe on my server.
Reply With Quote
  #9  
Old 03-21-2002, 07:10 AM
Jawelin Jawelin is offline
 
Join Date: Nov 2001
Posts: 557
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally posted by CoolaShacka
This Hack don't work for me.
IE can't find user.php?action=finddupe on my server.
???
?action=finddupe IS EXACTLY the hack.
Have you installed it ?
How could you say it doesn't work ? :cry: :surprised:
Reply With Quote
  #10  
Old 03-21-2002, 10:46 AM
CoolaShacka CoolaShacka is offline
 
Join Date: Dec 2001
Posts: 29
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It works now. :rambo:

I wrote
Quote:
<a href='adminlog.php?s=&action=resolveip
instead of
Quote:
<a href='loginlog.php?s=&action=resolveip
Maybe you have to edit your Atachment
Realy nice hack.
Thank you.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 05:33 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04426 seconds
  • Memory Usage 2,298KB
  • Queries Executed 25 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (4)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (9)postbit
  • (10)postbit_onlinestatus
  • (10)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete