vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.0 Full Releases (https://vborg.vbsupport.ru/forumdisplay.php?f=33)
-   -   Prevent Users With Low Post Counts Posting/PM'ing URLS (https://vborg.vbsupport.ru/showthread.php?t=60076)

NTLDR 01-10-2004 10:00 PM

Prevent Users With Low Post Counts Posting/PM'ing URLS
 
Title: Prevent members with low post count posting/pm'ing urls.
Author: NTLDR
Version: 1.0.1
vB Compatibility: vB3 Gamma, RC1, RC2

Description: I created this hack a while ago for use on my board to prevent people signing up and just posting a URL. This hack will prevent users with less than X posts from PM'ing or posting URLs.

File edits:

In includes/functions_newpost.php find:

PHP Code:

        eval('$errors[] = "' fetch_phrase('toomanyimages'PHRASETYPEID_ERROR) . '";');
    } 

Add after:

PHP Code:

$errors array_merge($errorsverify_message_urls($post['message'])); 

Find:

PHP Code:

    return sizeof($errors);


Add after (making sure you change REPLACE_NUMBER_OF_POSTS_HERE to the number of posts a user must have before being able to post/pm URLS):

PHP Code:

function verify_message_urls($pagetext) {

    global 
$vboptions$vbphrase$bbuserinfo;

    
$errors = array();

    if (
$bbuserinfo['posts'] < REPLACE_NUMBER_OF_POSTS_HERE) {
        if (
THIS_SCRIPT == 'newthread' || THIS_SCRIPT == 'newreply' || THIS_SCRIPT == 'editpost') {
            
$typephrase $vbphrase['post'];
        } elseif (
THIS_SCRIPT == 'private') {
            
$typephrase $vbphrase['private_message'];
        } else {
            
$typephrase $vbphrase['message'];
        }

        if (
preg_match('/\[url/i'$pagetext)) {
            eval(
'$errors[] = "' fetch_phrase('x_contains_urls'PHRASETYPEID_ERROR) . '";');
            
$errored true;
        }

        
$pagetext strip_bbcode($pagetext);

        if (!
$errored && preg_match('/h(\s*)t(\s*)t(\s*)p/i'$pagetext)) {
            eval(
'$errors[] = "' fetch_phrase('x_contains_urls'PHRASETYPEID_ERROR) . '";');
            
$errored true;
        }

        if (!
$errored && preg_match('/w(\s*)w(\s*)w/i'$pagetext)) {
            eval(
'$errors[] = "' fetch_phrase('x_contains_urls'PHRASETYPEID_ERROR) . '";');
            
$errored true;
        }

        if (!
$errored && preg_match('/(\w*)(\s*)(\.|dot)(\s*)(c(\s*)o(\s*)m|c(\s*)o(\s*)(\.|dot)(\s*)u(\s*)k|n(\s*)e(\s*)t|o(\s*)r(\s*)g)/i'$pagetext)) {
            eval(
'$errors[] = "' fetch_phrase('x_contains_urls'PHRASETYPEID_ERROR) . '";');
            
$errored true;
        }
    }

    return 
$errors;


If you want this to apply to posts only you don't need to do the following edit which is for PM's:

In private.php find:

PHP Code:

        // process errors if there are any
        
if (!empty($errors)) 

Add BEFORE:

PHP Code:

$errors array_merge($errorsverify_message_urls($pm['message'])); 

Phrases to add:

In Front-End Error Messages add:
Varname: x_contains_urls
Text:
Code:

Your $typephrase contains one or more URLs, please remove them before submitting your message again.

Boofo 01-11-2004 06:26 PM

Can we get a text install file for this? And, good work there. ;)

FleaBag 01-11-2004 06:47 PM

Another one let out of the bag. Good work. This will hopefully stop my rivals advertising their sites to my members lol.

Koutaru 01-11-2004 08:32 PM

Nice hack :) this one will really help prevent spamming no?

Xenon 01-11-2004 08:37 PM

instead of
PHP Code:

$url_errors verify_message_urls($post['message']); 
    foreach(
$url_errors AS $url_error) { 
        
$errors[] = $url_error
    } 

i'd use
PHP Code:

$errors array_merge($errorsverify_message_urls($post['message'])); 

but rather than that, nice one Lee :)

NTLDR 01-11-2004 09:08 PM

I had that origionally but it didn't seem to work, although I think that was due to me using $post['pagetext'] which doesn't exisit :P

Thanks for the comments Stefan :) I've updated the first post with this change.

Boofo 01-11-2004 09:14 PM

What is a good recommended setting for this?

Erwin 01-11-2004 09:16 PM

I've had this running on my site for 2 years now. But I use a much shorter piece of code to achieve a similar result.

bigdaddy04 01-15-2004 05:51 PM

Great hack!
Is there a similar one to 2.3.x versions?

Erwin, wanna share with us? :)

NTLDR 01-15-2004 05:53 PM

Erwin released and alternative version for vB2.


All times are GMT. The time now is 09:15 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01123 seconds
  • Memory Usage 1,760KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_code_printable
  • (8)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete