Search the Community
Showing results for tags 'MyBB'.
-
-
- medieval fantasy
- medieval magic
- (and 6 more)
-
We can add a select all functionality to the showthread.php page (where you see every single post) by exploiting the javascript that's already in mybb. This can be done in both icyboards and self-hosted mybb. The end result natively, doesn't look extremely neat but it works and with some styling to match the rest of your theme, you can get it looking sweet yourself. Go to Templates & Style > Templates > your template set Click on showthread templates Click on showthread Find this piece of code <div id="posts"> {$posts} </div> And directly above it paste in the following <!--select all posts--> <div style="position: relative; padding: 10px;" class="modonly inlinepostsall{$mybb->user['usergroup']}"> <div style="position: absolute; right: 5px;"> <input type="checkbox" name="allbox" onclick="inlineModeration.checkAll(this)" /> <input type="button" onclick="inlineModeration.clearChecked();" value="{$lang->clear}" class="button" /> </div> </div> <!--select all posts--> So you should end up with the following: <!--select all posts--> <div style="position: relative; padding: 10px;" class="modonly inlinepostsall{$mybb->user['usergroup']}"> <div style="position: absolute; right: 5px;"> <input type="checkbox" name="allbox" onclick="inlineModeration.checkAll(this)" /> <input type="button" onclick="inlineModeration.clearChecked();" value="{$lang->clear}" class="button" /> </div> </div> <!--select all posts--> <div id="posts"> {$posts} </div> Save it. It works now but it's available to everyone, we're going to fix this with the stylesheets. Go to your global stylesheet and paste the following anywhere. .modonly { display: none; } .modonly.inlinepostsall4, .modonly.inlinepostsall3, .modonly.inlinepostsall6 { display: block; } The numbers on the end of the class refer to the usergroup identifiers. 4 is the Administrator. 3 is super moderator. 6 are the moderators You can add more groups by adding them below .modonly.inlinepostsall6 Get the group ID by going to User & Groups and click on Groups. When you hover over the groups you have, a URL will pop up at the bottom left hand side of your screen. On the end of the URL is a number. This number if the Group ID that you want. If you want to have the buttons above and below all of your posts, find this piece of code again <div id="posts"> {$posts} </div> Paste this below it <!--select all posts--> <div style="position: relative; padding: 10px;" class="modonly inlinepostsall{$mybb->user['usergroup']}"> <div style="position: absolute; right: 5px;"> <input type="checkbox" name="allbox" onclick="inlineModeration.checkAll(this)" /> <input type="button" onclick="inlineModeration.clearChecked();" value="{$lang->clear}" class="button" /> </div> </div> <!--select all posts--> Now it's above and below all of your posts and it is only available for moderators and administrators!
-
Lonely/Open Threads Listing Tutorial Created By: isoldehn Tutorial Permissions: Please do not re-post this tutorial else where, instead link someone to this thread. - Additionally, you are NOT required to credit me if you use these codes on your board BUT I do wish for you to share this with those that ask about it if they ever do (share the knowledge, be kind). Tutorial Needs: Overall, the ability to copy and paste. - FTP/File Access To Web Space Step One Create the lonely threads file. Open your FTP client or file manager/file area of your web space. In your MyBB directory (usually located directly in public_html) create a new file called lonelythreads.php and insert the following code. <?php // ********************************************************* // * Listing by isoldehn 2019. * // * Free for for general public usage and change! * // * Please do not claim as your own nor charge money to * // * install this for others. * // * If any issues contact isoldehn on RPG Initiative. * // ********************************************************* define("IN_MYBB", 1); define('THIS_SCRIPT', 'lonelythreads.php'); $templatelist = "lonelythreads,lonelythreads_entry,lonelythreads_empty"; require "./global.php"; add_breadcrumb("Lonely Threads", "lonelythreads.php"); // ********************************************************* // ********************************************************* // ********************************************************* $query = $db->query(" SELECT * FROM ".TABLE_PREFIX."threads WHERE ".TABLE_PREFIX."threads.prefix IN (#) AND ".TABLE_PREFIX."threads.replies <= # AND ".TABLE_PREFIX."threads.lastpost >= ".TIME_NOW." - (# * 86400) ORDER BY lastpost DESC "); // SPECIFIED PREFIX IDS // WHERE ".TABLE_PREFIX."threads.prefix IN (#) // Please insert the pids or pid of the prefix(es) in question. These can be found by navigating to Admin CP --> Configuration --> Thread Prefixes. Click the prefix(es) in question, use the number(s) at the end of url(s). // SPECIFIED NUMBER OF REPLIES // AND ".TABLE_PREFIX."threads.replies <= # // Please insert the least amount of replies needed in order to list the thread. If you do not want a specified amount of replies then remove this AND query. // SPECIFIED LAST REPLY DATE // AND ".TABLE_PREFIX."threads.lastpost >= ".TIME_NOW." - (# * 86400) // Please insert the amount of days from the last post that the thread may be shown. 30 for example will show all threads with a post within the last 30 days. // ********************************************************* // ********************************************************* // ********************************************************* while($thread=$db->fetch_array($query)) { $thread['threadlink'] = get_thread_link($thread['tid']); $thread['lastpostlink'] = get_thread_link($thread['tid'], 0, "lastpost"); $thread['threadprefix'] = $threadprefix = ''; if($thread['prefix'] != 0) { $threadprefix = build_prefixes($thread['prefix']); if(!empty($threadprefix)) { $thread['threadprefix'] = $threadprefix['displaystyle'].' '; } } $thread['author'] = $thread['uid']; if(!$thread['username']) { if(!$thread['threadusername']) { $thread['username'] = $thread['profilelink'] = htmlspecialchars_uni($lang->guest); } else { $thread['username'] = $thread['profilelink'] = htmlspecialchars_uni($thread['threadusername']); } } else { $thread['username'] = htmlspecialchars_uni($thread['username']); $thread['profilelink'] = build_profile_link($thread['username'], $thread['uid']); } $lastpostdate = my_date('relative', $thread['lastpost']); $thread['lastpostlink'] = get_thread_link($thread['tid'], 0, "lastpost"); $lastposteruid = $thread['lastposteruid']; if(!$lastposteruid && !$thread['lastposter']) { $lastposter = htmlspecialchars_uni($lang->guest); } else { $lastposter = htmlspecialchars_uni($thread['lastposter']); } $lastpostdate = my_date('relative', $thread['lastpost']); // Don't link to guest's profiles (they have no profile). if($lastposteruid == 0) { $lastposterlink = $lastposter; } else { $lastposterlink = build_profile_link($lastposter, $lastposteruid); } eval("\$lonelythreads .= \"".$templates->get("lonelythreads_entry")."\";"); } if (!$lonelythreads) { eval("\$lonelythreads .= \"".$templates->get("lonelythreads_empty")."\";"); } eval("\$lonelythreads = \"".$templates->get("lonelythreads")."\";"); output_page($lonelythreads); ?> NOTE(S): Be sure you change all traces of # to the correct ids needed. The file contains // notes for you to follow along to. Please find the notes and edit as suggested. Step Two Create new templates for our listing. Navigate to Admin CP --> Templates & Style --> Templates --> Global Templates --> Add New Template (for each one). Template Name: lonelythreads <html> <head> <title>{$mybb->settings['bbname']} - Lonely Threads</title> {$headerinclude} </head> <body> {$header} <table width="100%" cellpadding="5px" cellspacing="0" border="0"> <tr> <td colspan="5" class="thead">Lonely Threads</td> </tr> {$lonelythreads} </table> {$footer} </body> </html> Template Name: lonelythreads_entry <tr> <td style="text-align: center; padding: 10px;" class="trow1"> {$thread['threadprefix']} </td> <td style="text-align: left;" class="trow1"> <a href="{$thread['threadlink']}"><strong>{$thread['subject']}</strong></a> <br /> by {$thread['profilelink']} </td> <td style="text-align: center;" class="trow1"> <a href="{$thread['tid']}" onclick="MyBB.whoPosted({$thread['tid']}); return false;">{$thread['replies']}</a> replies </td> <td style="text-align: center;" class="trow1"> {$thread['views']} views </td> <td style="text-align: right;" class="trow1"> {$lastpostdate} <br /> <a href="{$thread['lastpostlink']}">Last Post</a> by {$lastposterlink} </td> </tr> Template Name: lonelythreads_empty <tr> <td colspan="5" style="text-align: center; padding: 10px;" class="trow1"> Currently no threads to display. </td> </tr> Step Three Confirm your new page is working by navigating to yoursiteurl/lonelythreads.php and if it is working appropriately you should see a listing of your specifications!
-
MyBB 1.8 Using CSS In Posts (<style> Tag) Mybb does not allow the use of <style> tags in posts, simply because they deem it 'dangerous' which can be true but for us forum role players... style tags can mean life or death when it comes to posting tables! I have here a solution for you! Actually two solutions. As a kind reminder: - Before ever touching any core files you should back up your site properly, or keep a copy of the original file you are editing so that you can paste the original code back in easily if something goes wrong. - This tutorial was created using MyBB 1.8.x software. ------------------------------------------------------ Tutorial Created By: Isoldehn Tutorial Permissions: Please do not re-post this tutorial else where, instead link someone to this thread. Tutorial Needs: FTP Access & Knowledge On Editing Core Files AND/OR Ability To Copy & Paste MyCode Style Tag or Core File Edit For HTML Style Tag MyCode Style Tag Step 1 - Go to: Admin CP --> Configuration Tab --> MyCode (found in left side navigation) --> Add New MyCode Step 2 - Create a title and short description, I generally title it "Style" and add the short description as "MyCode style tags to contain CSS." Step 3 - Add in the regular expression: \[style\](.*?)\[/style\] Step 4 - Add in the replacement: <style type="text/css">$1</style> Step 5 - Be sure the MyCode is enabled (check yes), parse order doesn't really matter. ------ Well how do I use it now that I've installed it? You use it just like a style tag but with brackets instead of greater than or less than signs and you need to make sure all line breaks and paragraph breaks are removed from the css. - This will work: <div class="bee">Bee class here!</div><div class="boop">Boop class here!</div> [style].bee { background: pink; padding: 5px; } .boop { background: blue; padding: 15px; }[/style] - This will not work: [style] .bee { background: pink; padding: 5px; } .boop { background: blue; padding: 15px; } [/style] Core File Edit For HTML Style Tag Step 1: - Open up your FTP - Navigate to inc/class_parser.php Step 2: - Open the file, take a deep breath and look at none of it (unless coding is beautiful to you, in that case stare at it hard) - Find and remove |style from this bit of code: $message = preg_replace('#<(/?)(base|meta|script|style)([^>]*)>#i', '<$1$2$3>', $message); Step 3: - Save!! Step 4: - Go make a test thread and use the style tag, make sure it works. Remember you will need to remove all line breaks/paragraph breaks from the CSS! - This will work: <div class="bee">Bee class here!</div><div class="boop">Boop class here!</div> <style>.bee { background: pink; padding: 5px; } .boop { background: blue; padding: 15px; }</style> - This will not work: <div class="bee">Bee class here!</div><div class="boop">Boop class here!</div> <style> .bee { background: pink; padding: 5px; } .boop { background: blue; padding: 15px; } </style>
-
In this guide, I'm going to walk you through the process of installing the account switcher plugin for mybb. Everything you learn in this guide can be applied to any other plugin. All mybb plugins can be found on the extend section of mybbs website. What you need: Filezilla Client The first thing we need to do is download the Enhanced Account Switcher. When you have downloaded it, extract it to somewhere easy to access. I typically extract plugins to the desktop. You should now have a folder on the desktop named Upload. These are all of the folders and files that you need to upload. Head to your CPanel! URL and instructions on how to access the CPanel should have been emailed to you when you first registered with your host. Click on FTP Accounts Scroll down and under Special Accounts, find your main account. In the Type column, there's an icon of a man and next to it is the username you use to log into the cpanel. Further right, you will see Configure FTP Client. Click on Configure FTP Client. A new section will expand. Click on SFTP Configuration File under Filezilla. A file will download. Open up filezilla. Click on File. Import. Navigate to the xml you have just downloaded and click on Open. When it's done, click OK. Now go to file. Site Manager Select your website and click Connect. You're now connected to your site! On the bottom right, click on public_html Now on the bottom right, there is a list of files and folders that make up your mybb software. In FIlezilla, on the left hand side, are your computer's folders. Navigate to where you downloaded and extracted the enhanced account switcher and go into Upload. Highlight images, inc, jscripts and accountlist.php Now right click and click on Upload. Everything has uploaded into the correct folders! Creating new folders where necessary. Let's test your new plugin! Go to your forum's ACP. Click on plugins. You will be redirected to the following screen: Click on Install & Activate next to Enhanced Account Switcher. It's now installed and ready to use. If you have been on icyboards, this will probably look off! Please hop into the Coding Requests & Help and share what exactly is happening and a link to your forum. I can't give you any codes to use because this will not be a one size fits all unfortunately. Please reach out for help!
-
Fair warning! This list of steps might look daunting to you, but it is literally a step by step guide on how to upload your theme. This guide is intended for people who have no idea how to upload images to their forum using filezilla or cpanel. I am therefore assuming zero knowledge. Typically, when you find a theme you like, you will be given the option to download the theme. When you download it, you will find a zipped file. The zipped file will include all of the assets that you need to make your theme work. Your first task is to unzip the folder to somewhere easy to get to for you. Typically, I will just unzip to my desktop. When you open up the folder that you unzipped, you will see something like the following. The ReadMe First folder usually has any special instructions you might need for the theme! But we're going to ignore all of that, except the Upload folder. The Upload folder is the holder of all assets. This is what you need to upload, whilst preserving the path. If you are on icyboards: Go to your ACP. Click on icyboard settings. Click on enable FTP access. A password will be generated, it will be a random string of letters. Copy it. Open up filezilla client. You need to fill in your forum details up the top of the screen Host type in: icyboards.net In Username type: ib_youricyboardsdomain In Password, paste in the password you copied earlier. It should look like this Click quickconnect. Note: if you have bought a domain, do NOT use it. You must use the domain name that you registered your icyboards forum with. When you see the following text, you are good to go! Go back to the folder you unzipped and open it up. Now, when you open up the upload folder on your desktop (refer to the earlier screen capture) you will probably see a folder called images. Go into that and copy the name of the folder that is inside the images folder. Go back to filezilla. On the right hand side down the bottom, there are a list of folders like this The area I've drawn a circle around are all of your forum files. Right click in that area and click on Create Directory and Enter It. A dialog box will pop up asking you to name the folder. Paste in the name of the folder you just copied. You will be redirected to the new folder. Now it's time to upload! On the left hand side of filezilla there is a list of your folders on your computer under the words Local Site C:\Users\Logged-In-User\ navigate to the folder that you unzipped earlier. If you unzipped to the desktop, it's as simple as clicking on desktop, and then clicking on Unzipped Folder/Upload/images/next-folder/ You should now see all of the image files. Click on the first file. Hold down shift. Click on the last file. You should have all of the files selected. Right click and click on upload. Filezilla will start transferring the files over. When it has finished, you're ready to upload the xml! Go to your ACP. Go to Templates and Style. Click on Import a Theme. Click Choose File and navigate to the folder your unzipped. There is an XML Document there. Upload that. Tick Ignore Version Compatibility. Make sure Import Stylesheet and Import Templates is ticked. You have successfully imported a new theme! If you are self hosted Before going to your cpanel. Extract the theme you want to upload and go into it's folder. Go into Upload. Now go into the image folder. There is likely another folder in that, with the same name as the theme you downloaded. In my case, it is focus. Yours might be different. Right click on the folder, select rename and hit ctrl/command + c. Now go to your cpanel (link, username and password should have been sent to you by your hosting service.) Click on File Manager (top left). Double click public_html Double click on images Click on + Folder (top left) Paste the name of the folder you copied earlier into the dialog box that just popped up. Then click create new folder. Go into the folder that you just created. It's empty! Time to import the images. Click on Upload. A new tab will open. Select all of the theme images and drag them into the new tab. They will start uploading! When all the bars are green, scroll down and click on Go back. You should now be in the folder you created through your cpanel and you should see all of your images! Now it's time to go to your ACP on mybb. Click on Templates & Styles Click on Import a Theme. Click Choose File and navigate to the folder you extracted. Just inside of it is an XML file. Upload it. Make sure Import Stylesheets and Import Templates are selected. Also select Ignore Version Compatibility. Click import theme. It's now ready to go! Go to your site and select it from the theme selector to check it out. Javascript? If your theme employs any javascript you will need to import that as well. Use exactly the same method you used with the images, taking careful note of the folders that the js file is in, and mirroring that with filezilla/cpanel. Squares? If you have imported all of the images and there are little squares everywhere, it's probably using fontawesome. To add fontawesome to your theme, go to font awesome and copy the code. Go to your ACP and click on Templates & Styles > Templates > your theme. Scroll down to the bottom of the page and click on Ungrouped Templates > headerinclude Paste the code above the stylesheets variable, so you have something like this: <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.12/css/all.css" integrity="sha384-G0fIWCsCzJIMAVNQPfjH08cyYaUtMwjJwqiRKxxE/rx96Uroj1BtIQ6MLJuheaO9" crossorigin="anonymous"> {$stylesheets} Click save and returned to listing. Do a hard refresh on your site (ctrl or command F5) and it should be working fine! If you have run into any other problems, please feel free to use the coding requests and help forum.
-
*** Notice: This topic has a section for self hosted/piggy-back hosted MyBB forums that can access their core files through an FTP account for further capabilities of this function. Unfortunately the further capabilities consist of pulling thread prefixes/styled usernames to show as well and if you use Icyboards you cannot access core files to make these edits BUT you can still use Section One! [1.8] Recent/Latest Post Without A Plugin If you are anything like me you hate a long list of plugins in your ACP and you really hate uploading plugins because anything could go wrong (like accidentally placing files where they don't belong and finding them 3 weeks later thinking "how the ****?". So here is my replacement for this issue. There are two topics for this section. The first is the basic generic "pulling" and the second is a more advanced clean up for self hosted mybb forums (because unfortunately using the built in portals latest posts/threads function does not show thread prefixes (which a lot of people use for dictating whether or not a thread is Mature, Open, Private, etc.) and it also does not style a username with the color/styles attached to the usergroup) which we will fix in that section of this tutorial. Tutorial Created By: Isoldehn Tutorial Permissions: Please do not re-post this tutorial else where, instead link someone to this thread. Tutorial Needs: Overall, the ability to copy and paste. Section 1 - Knowledge Of MyBB Templates Section 2 - FTP Access & Knowledge On Editing Core Files Section One Using the script to pull the threads from the Portal! Please be sure your portal page is enabled and latest posts is enabled/settings configured. I'll let you figure this out on your own because you basically decide how many to show and from what forums/all forums. Step 1: - Open the ACP - Navigate to Templates & Styles --> Templates --> *current template set you are using* --> Portal Templates --> portal - Find: {$latestthreads} - Replace with: <div class="recent_posts">{$latestthreads}</div> Step 2: - Open up the template where ever you would like to add latest threads/posts to. Generally the option is on the index page, or a header, or even a sidebar. I cannot tell you where to place this since this is your choice. - Insert this: <script type="text/javascript"> jQuery(function(){ jQuery(".recent_posts").load("{$mybb->settings['bburl']}/portal.php .recent_posts"); }); </script> <div class="recent_posts"></div> * Credit for this coding is unnecessary as it is a simple script that can be developed by anyone. Step 3: (optional) - Style your latest posts/threads how you like. - Navigate back to Templates & Styles --> Templates --> *current template set you are using* --> Portal Templates --> portal_latestthreads - Create how you would like the div/table to be shown. You can delete everything inside, coding it to your own liking and then add the variable for the threads back in where you would like the thread/post list to show. Variable below for those that accidentally forget to save it. {$threadlist} - Navigate back to Templates & Styles --> Templates --> *current template set you are using* --> Portal Templates --> portal_latestthreads_thread - Again, create this how you would like it to be shown. Variables for things are below in case you forget to save. <a href="{$mybb->settings['bburl']}/{$thread['threadlink']}" title="{$thread['fullsubject']}">{$thread['subject']}</a> (Link to thread and name of thread) <a href="{$thread['forumlink']}">{$thread['forumname']}</a> (Link & name to the forum/board post was created in) <a href="{$thread['lastpostlink']}">Last Post</a> (Link to last post) {$lastposterlink} (Link to the last person that posted) {$lastpostdate} (Date the last post was made) {$thread['replies']} (Number of replies) {$thread['views']} (Number of views) Section Two Fixing the fact that thread prefixes do not show and usergroup styles do not work. Remember, if you continue on with section two we will be editing core files. BEFORE EVER EDITING CORE FILES YOU SHOULD ALWAYS CREATE A BACKUP OF YOUR SITE/FTP AREA (ALL FILES). Just in case anything goes wrong. This tutorial was also created for the MyBB 1.8 Series. If you use this on 1.6 things could very well go horribly wrong and support for 1.6 is no longer offered through MyBB Support. Step 1: - Open your FTP client or your file area where all core files of MyBB can be found. - Navigate to portal.php and open to edit. Step 2: - Find: $latestthreads = ''; // Latest forum discussions - This is the section/area we will be editing. Below those lines (336 & 337) will be all the edits that are being made. Step 3: - Find: $query = $db->query(" SELECT t.tid, t.fid, t.uid, t.lastpost, t.lastposteruid, t.lastposter, t.subject, t.replies, t.views, u.username - Replace with: $query = $db->query(" SELECT t.tid, t.fid, t.uid, t.lastpost, t.lastposteruid, t.lastposter, t.subject, t.replies, t.views, t.prefix, u.username, u.usergroup, u.displaygroup Step 4: - Find: LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=t.uid) - Replace with: LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=t.lastposteruid) Step 5: - Find: $lastposterlink = build_profile_link($lastposter, $thread['lastposteruid']); - Replace with: $lastposterlink = build_profile_link(format_name($thread['lastposter'], $thread['usergroup'], $thread['displaygroup']), $thread['lastposteruid']); Step 6: - Find: $thread['subject'] = htmlspecialchars_uni($thread['subject']); $thread['fullsubject'] = htmlspecialchars_uni($thread['fullsubject']); $thread['threadlink'] = get_thread_link($thread['tid']); $thread['lastpostlink'] = get_thread_link($thread['tid'], 0, "lastpost"); $thread['forumlink'] = get_forum_link($thread['fid']); $thread['forumname'] = $forum_cache[$thread['fid']]['name']; - Replace with: $prefix = build_prefixes($thread['prefix']); $prefix = $prefix['displaystyle']; $thread['subject'] = $prefix . " " . htmlspecialchars_uni($parser->parse_badwords($thread['subject'])); $thread['fullsubject'] = htmlspecialchars_uni($thread['fullsubject']); $thread['threadlink'] = get_thread_link($thread['tid']); $thread['lastpostlink'] = get_thread_link($thread['tid'], 0, "lastpost"); $thread['forumlink'] = get_forum_link($thread['fid']); $thread['forumname'] = $forum_cache[$thread['fid']]['name']; We are now finished!
-
Default Avatar Fix (If Not Showing) Icyboards OR Self Hosted For an unknown reason, sometimes when we try to place user avatars in particular areas, the default avatar (if they do not have one) does not show! I'll explain here a little HTML (image scroll tag with javascript) fix that will solve all your problems. Usually this problem will occur while putting the image in the header area or somewhere else. If you are having this problem on posts or profiles, this solution may work as well you'll just need to play around with the variable used for the users avatar. Tutorial Created By: Isoldehn Tutorial Permissions: You may use this tutorial on other sites so long as you credit me for the creation of the tutorial. If you reword this tutorial and make it your own, no need to credit me as it's no longer my wording. Do not claim credit for the creating the code and do not credit me for creating the code, this code is floating about the internet in many resource areas and is as well a very BASIC code. Tutorial Needs: Copy & Paste Abilities Self Hosted MyBB - Use this code, replace INSERTDEFAULTAVATARIMGURLHERE with your forums default avatar link: <img src="{$mybb->user['avatar']}" onerror="this.onerror=null;this.src='INSERTDEFAULTAVATARIMGURLHERE';"></img> Icyboards Hosted MyBB - Use this code, replace INSERTDEFAULTAVATARIMGURLHERE with your forums default avatar link: <img src="{$mybb->user['avatarcdn']}" onerror="this.onerror=null;this.src='INSERTDEFAULTAVATARIMGURLHERE';"></img> ---- This guide WILL work for using images any where else on a forum. So if you do not use MyBB/Icyboards, this might work on whatever forum you are using if you declare variable correctly. My example is just for MyBB in particular.
-
How to protect your MyBB forum from spam. This guide was written by VirusZero. Do not reproduce without permission. If you have a MyBB forum then you likely have at some point had to deal with spam. Most admins do inevitably have to cross this bridge. So, with that in mind, this guide will attempt to show you some of the most common ways to handle spam and what I feel are the most effective ways to manage spam and keep your forum clean. Before I start, please keep in mind that most of this was originally written for MyBB 1.6 forums though much remains the same for both 1.6 and 1.8. Several of the plugins listed have not been officially converted to MyBB 1.8 and, as such, may not function as expected (or at all) on MyBB 1.8. If you are running a MyBB 1.8 forum and use these plugins, they may still work for you (if you add "18*" to "compatibility" in the pluginname_info array). But you should always take a back up before ever attempting to install one of these plugins. (Just to be on the safe side.) Spamalyzer The Spamalyzer plugin (version .93 ) by ZiNgA BuRgA is one of the most effective methods to combat spam on a forum with the least amount of negative impact on users. This plugin stops spam by combing through each post to look for certain behaviours used extensively by spammers and then denying posts with those behaviours from ever appearing on site. For those who have never installed a plugin before... 1- Download a copy of the plugin from ZiNgA BuRgA's site. (Right here for MyBB 1.6 or here / here for MyBB 1.8.) 2- Use an extractor program (one that can handle 7zip) to open the file up. 3- Take the resulting 2 folders (admin and inc) and upload them to where your MyBB is installed. If you've changed where your admin files are located then rename the admin folder to whatever you changed it to first. For easy install, you can put them into a zip file then upload them to your MyBB install folder with your host's cPanel. Then you can click on the .zip file and click "extract" from cPanel (extract to your home folder so that the folders inside the .zip get merged with the existing folders of the same name.) 4- After uploading the files, go into your copy of MyBB's ACP. 5- Click "Plugins" from the left menu 6- Click "Install and Activate" beside the Spamalyzer plugin. After this plugin is installed you will need to configure it for optimal use. To do this go to "Configuration" then and look for the setting group titled "Spamalyzer Settings". Please keep in mind that the following settings are based on what I have used and what I have found to work well for me. This does not mean they are a perfect fit for everyone. They will, however, hopefully provide you with a starting point to make any tweaks and modifications to best fit your forum. Once inside Spamalyzer's settings page...Under the header "Thresholds and Exclusions" Look for the option titled "Groups to Moderate" and set that to groups "1,5" (these are your guests and validating members. Most spam that this will pick up will be by guests so there's no real reason to have this plugin running against members. Though if you do get spambots registering then feel free to add your member group ID, which should be 2, here.) If you do want to leave registered members up for checking, you will probably want to set "Registration Age (hours) Threshold" to like 700 hours or so. This way members who have stuck around for a while are excluded from checks (since most spammers will be joining up to spam right away, not like 4 weeks later). Then find "Ignored Hosts" and add: to the end of it in order to make it so that most free forums can advertise with you without issue. This will mean that even if a site (like say support.jcink.com) uses some of the words on the keywords list that it wouldn't count and the spam filter would just let everything go. Though this does nothing for other self-hosted sites (you can add them in if you wish, but it's likely more a hassle than is necessary). For the options under "Spam Weighting Factors": - "Weight per Simple link" set 0.3 (Simple links are like [*url]somelink[*/url] ) - "Maximum Simple link weight" set 3 (Simple links are rarely used, even by spammers... but there's no sense having this too high... just in case a legitimate user posts a simple link.) - "Weight Per Complex Link" set to 0.5 (complex links are like [*url=link]words[*/url]) - "Maximum Complex Link Weight" set to 4 (You'll want a limit on this because guests will be posting links to their sites and if they have a lot this setting, if left too high, could unfairly flag them as spammers.) - "Same Host Link Bias" set to 0.15 (This punishes spammers for linking to the same place over and over. We want this set fairly low because guests will be linking to their sites a few times and we don't want them punished for it.) - "Duplicate Keyword Bias" to 0.3 - "Badword Weight Factor" to 2.5 (this means if a spammer uses the same keywords over and over... they get penalized more heavily for it.) - "Weight Per Day for Bumping Old Thread" set to 0.15 - "Maximum Weight Applied for Bumping Old Thread" set to 3 (If they bump a thread that's over 20 days old they will still get penalized, but not outrageously. This way if a legit user bumps their thread it doesn't erase their bump.) - "Special Forums" set this to whatever the Forum ID number (where it says "showforum.php?fid=#") for your advertising forum is. (I also recommend that if you have a guest friendly question section that you add that section's FID also just in case a spammer tries hitting there too.) - "Weight Factor of Special Forums" set to 1.5. (This increases the weighting for those sections, defined above, making spam like actions worth 1.5x more. So if they would have gotten a 3 spam points previously, it'd be worth 4.5 after this. You probably shouldn't set this higher than 1.5 simply because it can end up punishing legitimate users too harshly and detecting them as spammers.) For "Spam Weighting Factors (user)"... If you don't have the user groups enabled (only guests) then this won't make much difference. Though you can probably leave these at defaults since they're acceptable enough. For the values in Stop Forum Spam section... - "SFS Username Frequency Weight" to 0.8 - "SFS Email Frequency Weight" to 0.8 - "SFS IP Frequency Weight" to 0.8 - "SFS Weighting Limit" to 30 These are for your server checking into Stop Forum Spam's database to see if a poster is listed. Though since email likely won't be used by guests it has little value here. But username and IP have a lot of value here since spammers tend to recycle the same usernames and ips a lot. For Akismet, just leave the Akismet API blank because it's not overly useful (Stop Forum Spam does a better job here anyway). For Google Lookups, this section is somewhat difficult to really judge how effective it is. I've had it set but some Chinese spam still got in even though it should have just deleted it. But anything in Italian or French has gotten deleted. - "Foreign Language Weighting" to 10 - "Native Language" to "en" (or whatever language your forum is...) - "Google Search Results Weighting" to 0.2 - "Maximum Google Search Weighting" to 3 - "Minimum Google Search Message Length" to 50 For Spam detection heading... - "Report Post Weighting Threshold" to 7 - "Unapprove Post weighting threshold" to 10 - "Block post weighting threshold" to 15 These settings determine after how many points a post gets before it is reported to staff, unapproved and reported or just erased entirely without notifying staff. This allows a guest to have some spam-like behaviours without actually punishing them right off. (But still notifies staff to have a look, just in case something is amiss.) Though getting a score of 15 is actually quite difficult unless a user is deliberately trying. (Since the limits on links and means at best they could get 6 points... which isn't enough for a report. And the keywords selected are ones that are very unlikely for a legitimate user to ever actually use enough to be seriously penalized for. ) Under the Misc options... You can leave the "Keyword Minimum length" and "Ignored Keywords" without too much issue. (Though if you really wanted you could add any roleplay related terms you can think of to it. But generally it isn't necessary since they won't be detected by the bad keywords filter anyway or any of the other settings.) In the text box for "Bad Keywords" clear it then paste in: These keywords are commonly used by spambots and adding them will ensure that their posts get filtered. You can leave "Reporter User ID" to 1 to use the root admin's account to show as reporting if you want. Though you can also use another account (like a shared staff account or something) too just for visual difference. This one is purely up to you. You can set "Don't Duplicate Report" to "yes" purely to prevent a lot of duplicate reporting (just in case members can see a post that makes it through somehow and they report it...) Important safety tip - Even though Spamalyzer will prevent spam posts from showing up on site, it will still keep a record of the spam posts it's caught (detailing why it classed them as spam). These logs can be viewed in the ACP by "Tools & Maintenance" (top menu) then clicking "Spamalyzer log". You can then click the spam weighting number beside an individual post to see why it got that rating. Periodically you may want to prune these logs (to keep your database size down) by clicking the "Prune Spamalyzer Log" tab (in the Log section) and then entering a number to determine how many days worth of logs to keep. (I recommend pruning down to 15 days at first when using this system until you get used to it, just to occasionally check for any accidental mislabels of legitimate posts. But after a few months of using it then you can probably prune all, or all but 2-3 days, once you're satisfied with the system and it's tweaks.) IP2Location IP2Location is a plugin that detects the IP of a visitor then matches that IP to a country (based on CIDR ranges). It allows admins to restrict certain countries from either registering (by denying them access to the registration page) or it can actually block them from the site period. This latter option is the one we're after. (Thus preventing spammers from known bad countries from either registering or accessing the posting pages.) Like other plugins... - Get a copy of IP2Location from the source (MyBB 1.6 version / MyBB 1.8 version) - Go to IP2Location (Lite) and click "IP v4 BIN". - When asked to register click "Not now, bring me to download page" and download the .zip file titled: "IP2LOCATION-LITE-DB1.BIN.ZIP" - Unzip IP2LOCATION-LITE-DB1.BIN.ZIP. - Upload ip2location.php and the ip2location folder into your inc ->plugins folder. - Upload the IP2LOCATION-LITE-DB1.BIN file (that you unzipped earlier) to a folder of your choosing on your server (I suggest /inc/). - Click "Plugins" from the left menu - Click "Install and Activate" beside the IP2Location plugin. - Go to "Configuration" (from the top menu). - Click "IP2Location Country Blocker" from the list of plugins. - Enter the precise exact location of the uploaded IP2LOCATION-LITE-DB1.BIN on your server (EX- if your bin file was in /inc/ then you may need to write in /www/mybbfolder/inc/IP2LOCATION-LITE-DB1.BIN) - From the list of countries choose which ones cannot view (Windows users can press ctrl and click to select multiple options. Note- Do not select all, you will block yourself!) Due to high volume of spam/few registrations it is generally safe to block: China, Russia and Iran. - Choose the action you want to happen with blocked countries (either registration page only or all pages.) - OPTIONAL - Change the message you want to display to blocked countries. You may want to give an email address so users blocked in error can contact you and let you know. - Click "Save Changes" when done. Register Time Register time (v 1.2.1) is a plugin designed primarily to stop spambots from registering on your forum. It won't do anything to stop guest/unregistered spammers from getting into your guest ad section. I'm including it here though because some spammers will attempt to register accounts first and this can help stop them (which, if they can't register, means they can't drop spam in your other sections). - Upload register_time.php to your inc->plugins folder. - After uploading the files, go into your copy of MyBB's ACP. - Click "Plugins" from the left menu - Click "Install and Activate" beside the Register time plugin. - Go to "Configuration" (from the top menu). - Click "Register Time Settings". - Now set "register time" to 30 or so seconds. - Click "Save settings". Note - This is a core feature in MyBB 1.8 (according to here). So MyBB 1.8 users don't need to install this (it's already there). However you may have to look through the options to find out where/how to configure it. Stop Forum Spam Stop Forum Spam for MyBB 1.6 is another plugin that won't stop a spammer from filling your guest ad section... But it will keep spambots from registering (and thus delivering spam that way). Note that like with Register Time this mod has been added to MyBB 1.8 by default so for 1.8 users it is unnecessary to install it. - Upload the inc folder (and contents, with file structure preserved) from the Stop Forum Spam to your inc folder. - After uploading the files, go into your copy of MyBB's ACP. - Click "Plugins" from the left menu - Click "Install and Activate" beside the Stop Forum Spam plugin. - Go to "Configuration" (from the top menu). - Click "Stop Forum Spam check". - Ensure that a checkbox is beside "Check Username?", "Check email address?" and "Check IP?". - Set "confidence level" to whatever you feel comfortable. (Lower numbers here mean more are rejected... 40-50% is probably a good level to use though. If you want higher protection then use 20%.) - Set "Log Denials" to "yes". - Set "Failsafe" to "yes". - Click the "Save Settings" button. .htaccess For self hosted forums, admins often have the option to use a .htaccess file (which lets the server know who is allowed to access a particular folder and who isn't). We can use this to our advantage to block entire ranges of IPs from known problem users with minimal effort. (And if they tried to visit any part of the forum at all they only get an error stating they can't view that page. So this means bots can't use urls to direct access your ad section to fill it.) Now because one of the largest producers of spam is China and the actual chances of getting any legitimate traffic from China is low (due to their heavily monitored internet, which would necessitate them to use VPNs or proxies to access out anyway) this makes them relatively safe to block without severe consequence. (The largest producer of spam is actually the US... But we don't want to block them because it affects too many legitimate visitors.) So how do we actually block using .htaccess? 1- You need to open your cPanel (or whatever equivalent to cPanel you have) and log in. 2- Once inside, look for "File Manager" icon and click it. 3- It should open up a menu asking you where you want to open up, and below that it should have a check box for "show hidden files" (or something along those lines)... make sure that box is checked. 4- Open your file manager and navigate to where your MyBB install is located. 5A- If you don't see a .htaccess file already there, Click the "New File" button at the top and name it ".htaccess" (without the quotes). Then open this file. 5B- If you see a .htaccess file there already then just open it up. 6- Now go to http://www.ip2location.com/blockvisitorsbycountry.aspx and select: - IPv4 - China - Apache .htaccess deny - Then click download and save the resulting text file somewhere. 7- Open that text file and copy it's contents. 8- Paste the contents of that text file into your .htaccess file. 9- Click "Save" (or Submit). Warning - editing .htaccess can block large numbers of people in a hurry. So be very careful about which IPs you add. And editing this file should always be done carefully and cautiously. (And it's a good idea to keep the cPanel open, then test the site, just in case something goes wrong so you can easily/quickly revert any changes.) Moderated Boards Having forums where all posts must be approved by moderators before they can appear is fairly effective. However it has a few major (and glaring) flaws... 1- large volumes of spam can overwhelm moderators. (Larger forums can easily get over a thousand spam posts in a day.) 2- this depends on moderators to actually approve posts. (And if no one either checks in for a few days or they have to go offline for some time can easily lead to issue 1.) Guest advertisers also can contribute to the first issue because if they don't see their post show up right away (when they hit submit) they may post again. Because of these major flaws, I do not recommend using moderated boards as a solo anti-spam solution. I feel that there are other, far more effective, solutions. Many of which are automatic and don't require constant staff attention. Though having it as a secondary option can be useful in cases. (Like if you have a guest ad account that's being abused...) To set this up: - Log into your ACP. - Click "Forum & Posts" (From the top links section) - Scroll down to your ad forum (or whichever forum you want to moderate) and click it's name. - Now in click "Edit Forum Settings" (it'll be in the first row of links under "home >> Forum Management") - Scroll down and locate "Moderation Options", now check the "Yes, moderate new threads" and "Yes, moderate new posts" options. - Then scroll down and click "Save Forum". Password Protected Boards Password protected boards are generally disliked by most advertisers. (Since it takes them an extra second to enter that password before they can post.) But they are quite effective at stopping a good percentage of spammers from ever managing to post on your site. On MyBB, you can create a password protected board by: - Log into your ACP. - Click "Forum & Posts" (From the top links section) - Scroll down to your ad forum (or whichever forum you want to add a password to) and click it's name. - Now in click "Edit Forum Settings" (it'll be in the first row of links under "home >> Forum Management") - Scroll down and locate the "Forum Password" option. Enter the password you want inside the text box. - OPTIONAL - Scroll up to the forum description and enter the password here (so guests can easily locate the password.) - Finally scroll down to the bottom and click "Save Forum" button. You may also want to add notes in the forum rules (like if you have a link back and first link section) about the password. To do this: - Log into your ACP. - Click "Forum & Posts" (From the top links section) - Scroll down to your forum that you want to add the notes to. - Scroll down to "Forum rules" and make sure the drop down is set to at least "Display rules for this forum in thread listing". - Then give them a title (if not already done). - Then just add a note about the password (and what it is) in the "rules" text box. - Finally scroll down and click the "Save Forum" button. Guest Accounts Guest accounts for advertising are almost universally hated by advertisers (because it slows them down even further). But they are effective for keeping spam out. Though guest accounts should generally be reserved for cases where other methods to allow advertising have failed (simply because they are somewhat cumbersome and generally loathed). Before you actually create a guest account, you may want to create a new usergroup for guest ad account. (This way you aren't giving guests complete access to post wherever they want...) - Log into your ACP. - Click "Users & Groups" (From the top links section). - Click "Groups" (from the menu on the left). - Click the "Add New Usergroup" tab from the top. - Enter a name for this usergroup. - Then under "Copy Permissions" select your banned user group. (Because banned user group should have no posting rights across your forum...) - Any other options here can be configured if you want. Otherwise click the "Save User Group" button. - Now click "Forum & Posts" (From the top links section). - Scroll down to your ad forum and click it's name. (You may have to repeat from here down if you have a first-link and back links section also...) - Now click "Permissions" (from the second set of tabs). - Then scroll down to find the ad group you just created and click "Set custom permissions". - Now give them the ability to post ("Can view forum", "can view threads within forum","Can post threads", "Can post replies"). - Then click "Save" to apply their permissions. To create a guest advertisement account: - Log into your ACP. - Click "Users & Groups" (From the top links section) - Click "Create new user" - Enter the username, password, email address, - Then set primary group to the ad group you just created. - Then click the "Save User" button. Closing the Ad section This is the last, and most drastic, option available to admins. However it is a choice worth considering in certain cases. (Like if your forum is getting overrun with spam despite employing other options.) Guest advertisers will HATE this (especially if you've recently posted any ads yourself). However this can be a necessary course of action. (Though please, if you employ this... stop posting ads while your ad section is closed. It's incredibly rude to do so.) To do this... - Log into your ACP. - Click "Forum & Posts" (From the top links section) - Scroll down to your forum that you want to close down and click it's name. - Scroll down to "Access Options" and then uncheck "Forum is Open?". - OPTIONAL - You may also want to add a short note (in your forum description detailing your ad section is closed temporarily due to extreme volumes of spam). - Then click the "Save Forum" button. If you have multiple ad forums (like a first link and link back section) then you may want to close them down, using the above method, also. Those are some of the most common methods of combating spam. They are not the only options though. (There may be other plugins which will provide spam protection.) And as time goes on, newer and more powerful options may present themselves. And I can't guarantee that this guide will be 100% relevant/accurate once newer plugins are released. But hopefully this guide has give you an overview of the options, how to configure them (and tweak them) to protect your sites. Thank you for reading and if you have questions, comments or concerns regarding this guide... Please feel free to ask here or PM me.