SEOClerks

How can you prevent forum spammers?



Write the reason you're deleting this FAQ

How can you prevent forum spammers?

In a previous discussion, we discussed whether allowing signatures on forums encourages spammers. Today I shall share some tips on how to prevent forum spammers.

  • Only enable signatures for active members: If you want to prevent spam, then you should only enable signatures for active members or members must reach a certain number of quality posts before they can add a signature. This will prevent members from coming on your forum and then posting extremely low quality posts just to advertise your website on their signature. If you have a section for people to advertise their website, then you should make sure there is a minimum post before posting there too.
  • Forum Spam addons: There are adddons out there that have access to spammer databases which will deny users from registering if their detail match with spammers. This will prevent spammers or spam bots trying to register on your forum.
  • Complex CAPTCHAs: Having complex CAPTCHAs will ensure that you keep spam bots away from your forum.

What are other ways to prevent forum spammers?

Comments

Please login or sign up to leave a comment

Join
Drake83
Moderators and staff members are the best way to stop it. While automated tools are great, they will never completely stop spam (for a forum or any other type of website that allows user contribution). Having an active staff browsing your website/forum periodically will catch all those posts that bypass your spam prevention measures.



Are you sure you want to delete this post?

anwebservices
I agree that for signatures should be allowed only to active members after certain number of quality posts, which can be as reward for their activities and there is less chance to be spammed with some bad signature links...



Are you sure you want to delete this post?

hitmeasap
Perfect methods to prevent spam! I would also consider to moderate all the replies (In the meaning of each reply going in to moderation before it gets visible.), even though this would be extremely time consuming. This will for sure allow only quality contributions and people wouldn't be able to spam meaningless replies just to increase their amount of posts.

Best Regards,
hitmeasap



Are you sure you want to delete this post?

EliteWriter
I agree that signatures should only be allowed for members who have proven to be active on the forum, with no infractions, and who have also managed to provide good contributions. One could also consider that they have been members for a certain period of time.
Moderators should be there to assess this, and also to keep an eye on people who might be trying to abuse the system.
Captchas can also help although they may be a bit tedious for those who are not spammers. I, for one, cannot stand them!
The forum spam add ons are a very good idea.



Are you sure you want to delete this post?

Beverly
Disabling signatures or any link posting for new members is an ideal way to cut out a lot of spam. Though spammers are pretty tricky and sometimes find a way around that. For that reason, hire a really devoted moderators who hate spam as much as you do. How can you prevent forum spammers?



Are you sure you want to delete this post?

ajlancer
Hi forum is very good source to communicate with user and share knowledge each other. And lot of spammer nowadays make hard to using fresh and clean forum. So, we can take some step against spammer.
> Registration process on forum has to be active by complex CAPTCHA.
> Do not allow forum link as dofollow and it should be nofollow and nofollow link does not effect much as SEO ranking
> Must to require email confirmation before allowing post from new member
> Enable anti-spam plugins. These plugins can automatically detect suspected spam based on links
> Don’t allow editing of comments after a few minutes have passed.
> Moderators and admin should review the spam queue on a daily basis, ban spammers and delete all their content

Thanks by Ajlancer



Are you sure you want to delete this post?

Shortie861
These are some really good tips. Preventing spammers is always a tough job but with the right kind of permissions in place on a forum you can find ways to minimize the amount of spam around your forum such as for example preventing a member from using the signature feature on the forum until they have been active members for a certain amount of days. Many spammers will not want to stay active on a forum just to be able to spam because it's not beneficial to them, they would rather find other places to spam than sit around and wait, it's other members who do not mind sitting and waiting who you have to watch for because as much as they can seem like genuine, honest members after a while they will catch you off guard and spam once they are able to, having a good moderator team always helps in catching those culprits though.



Are you sure you want to delete this post?

Corzhens
Pardon me but as a member, I don’t agree with complex captchas because it is turn off. In my experience, I have discontinued the registration in several forums due to errors in the captcha. It is frustrating when you cannot get the correct numbers or letters in the captcha. When I make 2 mistakes, I exit and I will blacklist that forum which means it doesn’t deserve my time. Maybe the best prevention for spamming is by way of alertness of the moderators. When you catch a spammer, mute him so he can see the forum but he cannot post anymore.



Are you sure you want to delete this post?

Order Now
Process Time: 0.24628806114197

Possible Duplicate queries found!
MatchCountSQLScript
SELECT * FROM `questions` as q JOIN categories_faq as c ON q.catid=c.CATID WHERE (q.status=1 OR (q.status=2 AND userid='') ) AND q.quesid='10184'1SELECT q.*, c.seo as CatSEO, c.name as CatName, c.parentid FROM `questions` as q JOIN categories_faq as c ON q.catid=c.CATID WHERE (q.status=1 OR (q.status=2 AND userid='') ) AND q.quesid='10184'

/opt/clerks-staging/docroot/viewfaq.php 496 () ()

SELECT * FROM seoclerks.members WHERE USERID='311920'1SELECT * FROM seoclerks.members WHERE USERID='311920'

/opt/clerks-staging/docroot/include/functions/includes/member.php 445 GetAllUserDetails() ()

SELECT * FROM categories_faq WHERE CATID='52'1SELECT CATID, seo, name, metatitle, h2header, metakeywords, metadescription, metaheader, parentid, image_name FROM categories_faq WHERE CATID='52'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() GetCategorySeoFromType()

SELECT * FROM seoclerks.members WHERE USERID=3119201SELECT googleplus_profile FROM seoclerks.members WHERE USERID=311920

/opt/clerks-staging/docroot/include/functions/main.php 16914 GetGooglePlusProfileFromId() ()

SELECT * FROM ratings_faq as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=10184 LIMIT 51SELECT m.username FROM ratings_faq as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=10184 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM answers a, seoclerks.members b WHERE a.quesid='10184' AND a.userid=b.USERID and b.status='1' AND a.status=1 ORDER BY a.combined_votes DESC, a.date_answered asc1SELECT a.answer, a.USERID, a.upvotes, a.downvotes, a.ansid, a.parentid, a.combined_votes, a.date_answered, b.username, b.userlevel, b.profilepicture FROM answers a, seoclerks.members b WHERE a.quesid='10184' AND a.userid=b.USERID and b.status='1' AND a.status=1 ORDER BY a.combined_votes DESC, a.date_answered asc

/opt/clerks-staging/docroot/viewfaq.php 1245 () ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=39885 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=39885 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=39836 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=39836 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=39843 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=39843 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=39879 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=39879 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=39889 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=39889 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=39890 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=39890 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=114993 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=114993 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=148992 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=148992 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

UPDATE questions SET total_views = total_views + 1 WHERE quesid='10184'1UPDATE questions SET total_views = total_views + 1 WHERE quesid='10184'

/opt/clerks-staging/docroot/include/functions/main.php 1765 update_Faqviewcount() ()

SELECT * FROM questions WHERE quesid!='10184' AND status='1' AND (question like '%How prevent forum spammers?%' OR question like '%prevent%' OR question like '%forum%' OR question like '%spammers?%') -- ORDER BY RAND() LIMIT 151SELECT quesid, question, seo, userid FROM questions WHERE quesid!='10184' AND status='1' AND (question like '%How prevent forum spammers?%' OR question like '%prevent%' OR question like '%forum%' OR question like '%spammers?%') -- ORDER BY RAND() LIMIT 15

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() ()

SELECT * FROM seoclerks.members WHERE USERID='1856' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='1856' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM seoclerks.members WHERE USERID='672' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='672' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM seoclerks.members WHERE USERID='632' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='632' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM seoclerks.members WHERE USERID='9' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='9' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM seoclerks.members WHERE USERID='43' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='43' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM members_ledger WHERE script='/opt/clerks-staging/docroot/viewfaq.php' AND querystring LIKE '%id=10184%' AND added>=UNIX_TIMESTAMP(NOW())-1200 GROUP BY USERID 1SELECT USERID, username FROM members_ledger WHERE script='/opt/clerks-staging/docroot/viewfaq.php' AND querystring LIKE '%id=10184%' AND added>=UNIX_TIMESTAMP(NOW())-1200 GROUP BY USERID

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() ()

SELECT * FROM categories1SELECT * FROM categories

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() parseRedundantQueriesCache()

select * from categories_software order by name asc1select * from categories_software order by name asc

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_GetSoftwareCategories()

select * from categories_wanttobuy order by name asc1select * from categories_wanttobuy order by name asc

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_wantcategories()

select * from categories_wanttotrade order by name asc1select * from categories_wanttotrade order by name asc

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_tradecategories()

SELECT * FROM seoclerks.members WHERE USERID='6289.jpg'1SELECT profilepicture FROM seoclerks.members WHERE USERID='6289.jpg'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='254580.jpg'1SELECT profilepicture FROM seoclerks.members WHERE USERID='254580.jpg'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='6160.png'1SELECT profilepicture FROM seoclerks.members WHERE USERID='6160.png'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='212316.jpg'1SELECT profilepicture FROM seoclerks.members WHERE USERID='212316.jpg'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='147.jpg'1SELECT profilepicture FROM seoclerks.members WHERE USERID='147.jpg'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='4987.jpg'1SELECT profilepicture FROM seoclerks.members WHERE USERID='4987.jpg'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='4225.gif'1SELECT profilepicture FROM seoclerks.members WHERE USERID='4225.gif'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='600657.jpg'1SELECT profilepicture FROM seoclerks.members WHERE USERID='600657.jpg'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

select * from categories_faq order by name asc1select * from categories_faq order by name asc

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_GetFaqCategories()

Invalid SQL

count(*)sql1error_msg

Expensive SQL

Tuning the following SQL could reduce the server load substantially
LoadCountSQLMaxMin

Suspicious SQL

The following SQL have high average execution times
Avg TimeCountSQLMaxMin
0.2944581SELECT A.*, B.seo, B.name as categoryname, C.username, C.userlevel, C.lastlogin, C.ip, C.profilepicture FROM wanttobuy A, categories_wanttobuy B, seoclerks.members C WHERE A.active = 1 AND A.category = B.CATID AND A.USERID = C.USERID ORDER BY A.viewcount desc LIMIT 0,400.2944580.294458
0.1879501SELECT COUNT(A.wantid) AS total FROM wanttobuy as A, categories_wanttobuy B, seoclerks.members C WHERE A.active = 1 AND A.category = B.CATID AND A.USERID = C.USERID 0.1879500.187950