FC New User Guard 1.0.1
A MyBB 1.8 plugin that helps reduce spam from newer logged-in members by limiting link-like content and posting frequency. It is not a complete anti-spam solution and is intended for staging review before production use.
Requirements
- MyBB 1.8 (target: 1.8.41) and a PHP version supported by your MyBB installation.
- Admin Control Panel access, file upload access, and a working database and settings cache.
- First test on a separate staging forum. No third-party services or API keys are needed.
Install
- Back up your forum files and database. Set up a staging copy first.
- Extract the ZIP. Copy
inc/plugins/fc_new_user_guard.phpinto your forum'sinc/plugins/directory. For example, a forum installed at/forum/uses/forum/inc/plugins/. - In the Admin CP, open Configuration → Plugins and find FC New User Guard. Click Install & Activate. If the button says only Activate, activate it.
- Open Configuration → Settings → FC New User Guard. Check the defaults and save your changes.
- Sign in as a regular test member, not an administrator or moderator. Run the test checklist below before installing on production.
No MyBB core files or templates are edited. Activation creates settings; deactivation stops protection but keeps settings. Uninstall deletes this plugin's settings. Back up or note your settings first.
Default settings and behavior
| Setting | Default | Meaning |
|---|---|---|
| Enable protection | Yes | Switch protection on or off. |
| Account age threshold | 7 days | Accounts younger than this are considered new. 0 disables the age criterion. |
| Post count threshold | 5 | Accounts with fewer than this MyBB post count are considered new. 0 disables the post-count criterion. |
| Maximum link-like matches | 0 | Blocks any detected link-like match. -1 disables link checking. |
| Maximum posts per window | 3 | Allows up to 3 existing posts in the window; the next attempt is blocked. 0 disables the rate check. |
| Rate window | 60 minutes | Counts recent approved and unapproved posts. Minimum 1 minute; maximum 525,600 minutes. |
| Exempt group IDs | Empty | Add comma-separated numeric group IDs (primary or additional), e.g. 4,6. |
A member is protected when either enabled threshold says they are new. For example, with defaults, an account older than 7 days is still restricted if it has fewer than 5 posts, and an account with 5 posts is still restricted if younger than 7 days. If both thresholds are 0, no one is considered new. A missing or zero registration timestamp does not trigger the age criterion. MyBB's postnum is used, so forum settings that exclude posts from user post counts affect eligibility.
The guard checks normal new threads, replies, and MyBB quick replies for logged-in members. It does not check guests, registrations, private messages, edits, attachments, polls, signatures, custom posting endpoints, or actions performed through other plugins. Administrators with Admin CP permission, moderators in the current forum, and members of exempt groups are skipped. Draft saves and previews are skipped; the guard checks when the draft is submitted for publication.
The rate check counts the member's existing approved and unapproved posts (visible 1 or 0) across forums in the window. Drafts and deleted posts are excluded. When at the limit, the next attempt is blocked. While the rate limit applies, the plugin disables MyBB post merging for that submission only, so consecutive replies are separate posts and can be counted. This does not change the saved board setting or affect exempt users. Existing merged replies remain a single post. MyBB’s own flood controls may also reject consecutive replies when merging is disabled. This is a best-effort check, not a strict atomic rate limiter; near-simultaneous requests can exceed the limit. Other MyBB post limits may also apply.
The link check is heuristic: it recognizes http://, https://, www., and opening [url], [url=...], [img], or [img=...] MyCode patterns in the subject and message, including quoted text. These are pattern matches, not unique URLs: one formatted link can count as more than one match. Bare domains, obfuscated links, and other formats can be missed. Ordinary text containing these patterns can be blocked. It is not a guarantee against spam; keep MyBB's built-in anti-spam and moderation controls enabled.
Blocked users receive a short error message. The error page may discard unsaved post text, so copy text before testing or retrying. The plugin has no block log, moderator dashboard, or alert; moderators will only know about a block if the member contacts them. It stores no additional post content or personal data and makes no external requests.
Staging test checklist
Use one non-exempt account newer than the threshold and below the post threshold; use a second established or exempt account for comparison. Use a test forum where normal posting is allowed.
- Confirm the new account can post a plain message while below the rate limit.
- Attempt a post containing
https://example.comand one containing[url]example.com[/url]: each should be blocked with the default link limit. - Save a draft with a link, then try to publish it: saving should work, publishing should be blocked.
- Set the limit to 1 post per 60 minutes; create a plain post and try another. The second should be blocked. Test new threads, full replies, and quick replies.
- Confirm an established account meeting both thresholds is not blocked by this plugin. Separately check an exempt group member and a moderator for the test forum.
- Set Enable protection to No and confirm the restriction no longer applies. Restore your chosen settings.
- Deactivate and reactivate; then uninstall on staging and confirm plugin settings disappear. Reinstall if needed.
If a test fails, leave the plugin disabled and review MyBB/PHP error logs. Do not publish the plugin until an end-to-end MyBB staging run has passed.
Troubleshooting and removal
- Plugin not listed: verify the path and file name and refresh Configuration → Plugins. Check PHP error logs.
- Settings missing: use Install & Activate, not just file upload. Check that
inc/settings.phpis writable by MyBB. - A legitimate post is blocked: remove link-like text or adjust the threshold, link limit, or exemptions. The post may need to be re-entered. For immediate relief, turn protection off or deactivate the plugin.
- Rate limit not triggered: verify the user is not a moderator/admin/exempt, and that the existing post is approved or unapproved and within the window. Other plugins may bypass normal MyBB posting endpoints.
- Remove fully: Deactivate, then Uninstall in Configuration → Plugins, and delete
inc/plugins/fc_new_user_guard.php. Uninstall removes the plugin settings; no other MyBB data is intentionally removed.
License and redistribution
Copyright © 2026 ForumCrafts contributors. This plugin is free software under GNU GPL version 3 or any later version. The complete license is in LICENSE. No license key is needed. GPL gives recipients rights to use, modify and redistribute under its terms; commercial distribution is possible but cannot override those rights. Review the license and any distribution obligations with your own adviser if needed.
Test status
Local staging checks used official MyBB 1.8.41, PHP 8.4, and SQLite: ACP install/activate, link blocking in threads and replies, quick-reply JSON errors, draft saving, per-post rate blocking with post merging enabled, deactivate, and uninstall. MyBB post-flood checking was disabled for the rapid rate-limit test; it was otherwise enabled. PHP syntax and isolated behavior tests also passed. Draft publication, exempt-user posting, other database engines and browser UI were not end-to-end tested. Run the full checklist on your own staging copy before production; other plugins and forum settings can affect behavior.