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", $valid, time()+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