Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
  #11  
Old 09-28-2008, 09:04 AM
Artes_Marciales Artes_Marciales is offline
 
Join Date: Jun 2007
Posts: 278
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by lambdacerro View Post
Ok, releasing the code and database:

What you need:
A website (duh)
A IP To Country Database (included here)

So the script is like this:
PHP Code:
<?php
// Check if the cookie exists
if( empty($_COOKIE['IsValid']) ) {

    
$valid 'true';

    
// Establishing a database connection
    
$dbh=mysql_connect("localhost:3306","USER","PASS");
    
mysql_select_db("IP_ToCountry_Database");

    
// Getting User's IP
    
$ip $_SERVER["REMOTE_ADDR"];

    
// Executing main query
    
$country_exec mysql_query("SELECT * FROM iptocountry WHERE ipto >= inet_aton('$ip') AND ipfrom <= inet_aton('$ip')");

    
// Fetching the record
    
$ccode_fetch=mysql_fetch_assoc($country_exec);

    
// Getting the country code from the array
    
$pais=$ccode_fetch['country2'];

    
// Declaring the Allowed Countries by their CountryCode2
    
$allowed = array('US''AR''UY''BR''FR');

    
// Verifying if the user belongs to any of the allowed countries
    
if (!in_array($pais$allowed)) {
    
$valid 'false';
    }
    
// Setting the cookie for a 10 minutes life
    
setcookie("IsValid"$validtime()+600);
    
mysql_close($dbh);
    if ( 
$_COOKIE['IsValid'] == 'false' ) {
    echo 
"Not allowed country";
    die();
    }
}else{
    if ( 
$_COOKIE['IsValid'] == 'false' ) {
    echo 
"Not allowed country";
    die();
    }
}
?>
There you have to set the MySQL Connection and the valid countries array.
You can get the countrycode2 of all the countries from here:
http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

You can get the IP To Country Table for free at http://ip-to-country.webhosting.info/
But it's in csv, I passed it to sql and attached.

I added this script at init.php, but I don't think init.php is the best place for adding that code.

That's All.

NOW I want to know how to transform this script in a vBulletin plugin, I think the ip to country table can be added to vBulletin database, and in the script use the db=> thing.

Thank you
Any plugin for this?
Reply With Quote
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 10:45 AM.


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.05032 seconds
  • Memory Usage 2,678KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (2)bbcode_php
  • (7)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (12)post_thanks_box
  • (12)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (12)post_thanks_postbit_info
  • (12)postbit
  • (1)postbit_attachment
  • (12)postbit_onlinestatus
  • (12)postbit_wrapper
  • (1)showthread_list
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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_threadedmode.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
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids_threaded
  • showthread_threaded_construct_link
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • 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
  • postbit_attachment
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete