Removing spam registrants

#1

Is there a way of removing large numbers of false registrants without doing this one by one? Using OJS 3.02 Bootstrap.

#2

If you can generate the list of users, you can use the mergeUsers tool:

#3

Thanks. I have too many users to use mergeUsers tool.
Can someone please advise which file it is where I need to add some of the options listed in this link?

#4

The mergeUsers tool would be most helpful, I think, in the case of a large number of users. In the other post, James describes using a PHP script to call the mergeUsers tool on a list of hundreds or thousands of usernames.

ReCAPTCHA and email validation are setup in config.inc.php.

In my personal experience, we found that spammers had completed both ReCAPTCHA and email validation, so our best response was using the plugins:

Deleting users from the OJS database
#5

Thanks. I can see it will be helpful to install a plugin to prevent spam registrants. But can I use it to delete a few thousand fake registrants? I can’t see how from the information.

#6

If you are comfortable with SQL for database access, you can pull the list of usernames directly from the database. See for example:

In one case, we saw only illegitimate users coming from @lexxip.com.

In the past, I used the following query (in OJS 2.x) to describe user activity in order to identify suspect users:

select
	u.user_id,
	u.username,
	u.email,
	u.first_name,
	u.middle_name,
	u.last_name,
	u.url,
	u.disabled,
	u.date_registered,
	u.date_validated,
	bit_or(r.role_id) roles,
	count(distinct a.article_id) articles,
	count(distinct e.article_id) editing,
	count(distinct v.review_id) reviews,
	group_concat(b.setting_value ORDER BY b.setting_value separator ' ') biography,
	group_concat(c.body ORDER BY c.body separator ' ') comments,
    group_concat(s.setting_value ORDER BY s.setting_value separator ' ') signature,
	count(distinct c.comment_id) comment_count
from
	users u
	left outer join user_settings b on (u.user_id = b.user_id and b.setting_name = 'biography')
	left outer join user_settings s on (u.user_id = s.user_id and s.setting_name = 'signature')
	left outer join comments c on (u.user_id = c.user_id)
	left outer join roles r on (u.user_id = r.user_id)
	left outer join articles a on (u.user_id = a.user_id and a.status in (1, 3))
	left outer join review_assignments v on (u.user_id = v.reviewer_id)
	left outer join edit_assignments e on (u.user_id = e.editor_id)
group by
	u.user_id,
	u.username,
	u.email,
	u.first_name,
	u.middle_name,
	u.last_name,
	u.url,
	u.disabled,
	u.date_registered,
	u.date_validated;
#7

Thanks. I’m not a programmer and am not familiar with SQL. I was hoping for a hidden list where I could delete names! :stuck_out_tongue_winking_eye: