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

Reply
 
Thread Tools Display Modes
  #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
  #12  
Old 02-22-2009, 02:35 PM
Rik Brown's Avatar
Rik Brown Rik Brown is offline
 
Join Date: Nov 2005
Location: St. Louis, Missouri, USA
Posts: 132
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I was able to update the script above to work with a current version of the ip2country database which we already had on our site for another application. However, I get a "headers already sent" error message when I embed it into init.php as an include (at least when I log out of vb to do further testing).

Is there a particular vb file/line that works best for this? Any updates?

Thanks. -- Rik

ps: If I get it working, I'll post my updated code.
Reply With Quote
Reply


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:04 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.03523 seconds
  • Memory Usage 2,211KB
  • Queries Executed 12 (?)
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
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (2)post_thanks_box
  • (2)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit_info
  • (2)postbit
  • (2)postbit_onlinestatus
  • (2)postbit_wrapper
  • (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_post_thanks.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
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • 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
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete