View Single Post
  #7  
Old 03-17-2005, 06:14 AM
Brad Brad is offline
 
Join Date: Nov 2001
Posts: 4,765
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Heres a simple way to do it, but you'll lose the ability to ban domains (which should'nt matter because you are only allowing certain domains anyway). What I am basicly going to do is take the Banned Email Addresses list and turn it into the Allowed Email Addresses list.

Open functions_register.php in a code editor, and find this block of code:

PHP Code:
// ###################### Start checkbannedemail #######################
function is_banned_email($email)
{
    global 
$vboptions$datastore;

    if (
$vboptions['enablebanning'] AND !empty($datastore['banemail']))
    {
        
$bannedemails preg_split('/\s+/'$datastore['banemail'], -1PREG_SPLIT_NO_EMPTY);

        foreach (
$bannedemails AS $bannedemail)
        {
            if (
is_valid_email($bannedemail))
            {
                
$regex '^' preg_quote($bannedemail'#') . '$';
            }
            else
            {
                
$regex preg_quote($bannedemail'#');
            }

            if (
preg_match("#$regex#i"$email))
            {
                return 
1;
            }
        }
    }

    return 
0;

Simple function, if a email address is on the list it returns 1, otherwise 0. Depending on what it returns an error is thrown letting the user know the email address they entered has been banned. So basicly by swaping the 0 and 1 you will reverse what triggers the error, which in this case would be a email address that is not on the list.

So our block of code becomes:

PHP Code:
// ###################### Start checkbannedemail #######################
function is_banned_email($email)
{
    global 
$vboptions$datastore;

    if (
$vboptions['enablebanning'] AND !empty($datastore['banemail']))
    {
        
$bannedemails preg_split('/\s+/'$datastore['banemail'], -1PREG_SPLIT_NO_EMPTY);

        foreach (
$bannedemails AS $bannedemail)
        {
            if (
is_valid_email($bannedemail))
            {
                
$regex '^' preg_quote($bannedemail'#') . '$';
            }
            else
            {
                
$regex preg_quote($bannedemail'#');
            }

            if (
preg_match("#$regex#i"$email))
            {
                return 
0;
            }
        }
    }

    return 
1;

Now navigate to vB admin cp -> vBulletin Options -> User banning options -> Banned Email Addresses and enter "@foo.com" (without quotes) in the textarea and anybody that registers will have to use an email address on the @foo.com domain.

This best thing about this approch is that it supports multiple domains, and its easy to add and modify them.
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01062 seconds
  • Memory Usage 1,794KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_php
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete