Sunday, November 18, 2007

Maxmind GeoIP install setup tutorial using PHPMyAdmin

After struggling to find a straight forward tutorial on how to install the Maxmind's GeoIP Country Database in PHP and MySQL using PHPMyAdmin I decided to write my own step by step guide with illustrations. My tutorial is based heavily upon the tutorial i found at http://vincent.delau.net/php/geoip.html and much of the credit should go to the author.

The main trouble I had was the CSV upload file limit size was 2.5mb where as the maxmind geolite countries database is 8+mb, transfering this much data is bound to cause problems for any server. Because I didnt want to mess around with the PHP.INI file and change the upload limit on the server and I had APACHE, PHP and MySQL installed on my local machine, I decide the best way would be to create the database locally then split it up if neccessary and upload it to my production server that way.

Creating the GeoIP database
Simply open up your PHPMyAdmin and click the SQL query window in the top left, dont worry if your PHPMyAdmin looks different the functions are essentially all the same. Below is an image where to find the SQL Query Window.



Click this button and a SQL Query Window will popup.

If a 'geoip' database doesnt already exist and you have permission copy and paste the following code into that SQL Query Windows text area else skip this bit
CREATE DATABASE geoip;
USE geoip;


now copy and paste the following code into that SQL Query Windows text area
CREATE TABLE cc (
ci tinyint(3) unsigned NOT NULL auto_increment,
cc char(2) NOT NULL,
cn varchar(50) NOT NULL,
PRIMARY KEY (ci)
) AUTO_INCREMENT=1 ;

CREATE TABLE csv (
start_ip char(15)NOT NULL,
end_ip char(15)NOT NULL,
start int(10) unsigned NOT NULL,
end int(10) unsigned NOT NULL,
cc char(2) NOT NULL,
cn varchar(50) NOT NULL
);

CREATE TABLE ip (
start int(10) unsigned NOT NULL,
end int(10) unsigned NOT NULL,
ci tinyint(3) unsigned NOT NULL
);




Dont worry about what is selected in the "Run SQL query/queries on database" Select menu or if the two checkbox options are selected or not then click the 'GO' button. When Your SQL query has been executed successfully close the MySQL Query Window we dont need that anymore. You should now see the following...



Importing GeoIP CSV data into MySQL database
Click the csv link on the left side under the geoip tables list, when the page loads scroll down to the bottom and click the "Insert data from a text file into the table" at the very bottom.



If you havn't done so already download the latest GeoLite Country CSV format this version is slightly less accurate than the full one but it is free and save it somewhere easy to find on your PC, the download can also be found here at http://www.maxmind.com/app/geoip_country.
It is essential to set up the text file importer or else the data will not import correctly, first lets find the Maxmind CSV file we are going to import that we have saved on our local machine. Click the browse button to locate the file, because of the specific way maxmind saves the data in the CSV file we have to adjust our text importer. The only options we should have to change are "Fields terminated by" should be change to a comma "," instead of the default colon ";" and "Lines terminated by" to linefeed "\n" instead of the default carriage return and line feed "\r\n". Then Click Submit, see image below for visual example.



When the import has completed successfully we can proceed to extract IP ranges and countries into two different tables. By default all this data is in one file, Maxmind simply adds new ip range and numbers to an associating country and appends the data to the end of the CSV file monthly. By keeping all the data in a single Comma Separated Values Format it is much easier to maintain and update however it is very slow to search and parse the data. We are going to optimize our database for speed and size, by separating the two data sources, IP range from countries we can greatly reduce the amount of data mysql has to search through. We later simply join the two tables back together again by an ID number when we perform a search or query on our geo database.

Optimize GeoIP database for size and speed
Ok lets extract all the different countries from the 'csv' table into our 'cc' table, open up the SQL Query Window again, Copy and Paste the following code into the text area and click the 'GO' button.

INSERT INTO cc SELECT DISTINCT NULL, cc, cn FROM csv;


When Your SQL query has been executed successfully we can extract the IP Range and Numbers data from the 'csv' table and insert it into the 'ip' table. Copy and Paste the following code into the SQL Query Window windows text area and click the 'GO' button.

INSERT INTO ip SELECT start, end, ci FROM csv NATURAL JOIN cc;


The last SQL statement simply tells MySQL to insert the unique start and end IP number range of a particular country into the 'ip' table, the 'ci' field in the 'ip' table indicates the id of the country in the 'cc' table, we use the two 'ci' fields later to join the two tables together in select query statment.

Our geoip database is now set up but first, since the 'csv' table is of no use to us any more go ahead and delete it.

During this install you may have noticed we no longer have any reference to IP address ranges only numbers this is because PHP has some inbuilt functions we can use to convert IP address to an IP number and vise versa ip2long() and long2ip(). These functions also save us a lot of space overheads in MySQL and speed up our searches.

Installing GeoIP database through PHPMyAdmin
Ok we have successfully installed the Geo IP database on our local machine lets go ahead and prepare our production server.

Update Maxmind GeoIP database
If your production server already contains an older version of the Maxmind GeoIP database it is recommended that you fully delete all the TABLES within that database but not the actual database.

Install New Maxmind GeoIP database
If you are installing the Maxmind GeoIP database from scratch then you will have to create a new database. If you have permission to create a new database through PHPMyAdmin copy and paste the following code into the SQL Query Windows text area and the click 'GO'.

CREATE DATABASE geoip;
USE geoip;

Some web hosts employ a control panel which directly controls the creation of databases so you may have to create a database through this tool first if this is the case name your database 'geoip'. Then open up PHPMyAdmin with this database selected.

First lets begin with the 'cc' table because it is the smaller of the two it only has 234 rows or there abouts we can probably export this from our local machine and install it on our production server in one go. Click the 'cc' table list from the geoip tables list on the left side in PHPMyAdmin then click the export tab at the top, by default the preselected settings are already correct see image below then just click 'GO'.

Now copy all the text in the text area including the create table and insert data and paste it into the SQL Query Window on your production servers PHPMyAdmin, don't worry about the comments MySQL filters them out.

Now the larger MySQL 'ip' table my row count is 96459 even our clipboard will struggle with this so it is best if we probably start by just creating the table structure by itself on the production server. Click the 'ip' table list from the geoip tables list on the left side in PHPMyAdmin then click the export tab at the top, this time we are going to modify the default preselected settings, leave everything the same as default but this time uncheck the 'Data' checkbox see image below then just click 'GO'.



Now copy all the text in the exported text area which tells mysql of the table structure and paste it into the SQL Query Window on your production servers PHPMyAdmin, again don't worry about the comments MySQL filters them out.

This time on the export page of the 'ip' table uncheck the structure checkbox but leave the data checkbox checked, where it says Dump (type number of rows here) row(s) starting at record # (type the starting row index here) we will be repeating this export process 4 times, each time we do this we will be changing the starting row index. Select 30000 rows starting from row 0 on my machine it took roughly 10-15 seconds to export, then copy the text area its probably easiest to right click the text area and select all then copy and paste it into the SQL Query Window on your production servers PHPMyAdmin, this insert roughly took 3 minutes and 30 seconds to complete and performance depends on your bandwidth and servers processor. See images below.





I completed the task in blocks of 30000 rows and I had to repeat the process 4 times, where it says Dump (type number of rows here) row(s) starting at record # (type the starting row index here).Repeat the above process 4 times and change the export data as follows

Dump (30000) row(s) starting at record # (0).
Dump (30000) row(s) starting at record # (30000).
Dump (30000) row(s) starting at record # (60000).
Dump (30000) row(s) starting at record # (90000).

You should now finally have the current version of Maxminds GeoIP country database installed on your production server. The database is now ready to be used.

How to use the GeoIP database
Create a new php include file with the following code, I named mine 'geofunctions.inc.php' appropriately for its purpose.

<?php
function getALLfromIP($addr,$db) {
global $Config;
// this sprintf() wrapper is needed, because the PHP long is signed by default
$ipnum = sprintf("%u", ip2long($addr));
$query = "SELECT cc, cn FROM ip NATURAL JOIN cc WHERE ${ipnum} BETWEEN start AND end";
$result = mysql_query($query, $Config["geolocationdb"]);

if((! $result) or mysql_numrows($result) < 1) {
//exit("mysql_query returned nothing: ".(mysql_error()?mysql_error():$query));
return false;
}
return mysql_fetch_array($result);
}

function getCCfromIP($addr) {
$data = getALLfromIP($addr);
if($data) return $data['cc'];
return false;
}

function getCOUNTRYfromIP($addr) {
$data = getALLfromIP($addr);
if($data) return $data['cn'];
return false;
}

function getCCfromNAME($name) {
$addr = gethostbyname($name);
return getCCfromIP($addr);
}

function getCOUNTRYfromNAME($name) {
$addr = gethostbyname($name);
return getCOUNTRYfromIP($addr);
}
?>


Within your PHP page where you wish to use geoip country functions you would simply make a call to which ever function you wish to use, see below for example.

<?php


// GEO LOCATIONS DATABASE CONNECTION
$Config["geolocationdb"] = mysql_connect("host", "username", "password");
mysql_select_db("geolocationdb", $Config["geolocationdb"]);

include('geofunctions.inc.php');

$remote_address = $_SERVER['REMOTE_ADDR'];

print "<p>".getCCfromIP($remote_address)."</p>\n";
print "<p>".getCOUNTRYfromIP($remote_address)."</p>\n";
?>


Further GeoIP Reading and External Links
If speed and efficiency are a concern it is helpul to understand the differences between tables InnoDB and MyISAM, where InnoDB is slower for searching but faster at updating than MyISAM.

237 comments:

1 – 200 of 237   Newer›   Newest»
Jeremy Cole said...

Hi,

Your post inspired me to finish a blog entry I've been working on for a few days on the poor performance of this method for geo-referencing IP addresses, and what can be done about it. You can read it here:

On efficiently geo-referencing IPs with MaxMind GeoIP and MySQL GIS

I hope that helps!

Regards,

Jeremy

MikeyH said...

Just what I needed - cheers fella!

Vincent de Lau said...

Thanks for the credit! You wrote a nice article and should get the less savvy users on their way.

Johan said...

I works like a charm, almost...

I get two errors, please have a look at http://niemi.it/playground/geoip/

I followed your instructionsdown to the smallest detail.

Anonymous said...

Johan again. This corrected the errors:

Change function

getALLfromIP($addr,$db) {

to

function getALLfromIP($addr) {

Maybe this should be changed in your source code? Thanks for a nice tutorial.

Anonymous said...

and how can I put it to work, for example: I want that in mysite.com my us visitor to be redirected to mysite.com/us? thanks

Hoxie Web Design said...

Awesome, a little tweaking with the database name but it worked! Thanks!

Lydia said...

People should read this.

Sneha Gupta said...

Hi Friend,
Congratulations for this nice looking blog.In this post everything about Web Design Accessibility have meaningful information that would be better for others who are interested in web Design.
Thanks & Regards.

Tiffany B. Brown said...

upload_max_filesize is one of those configuration variables that you can change with .htaccess (if you're using Apache, that is).

The syntax is:
php_value upload_max_filesize xxM where xx is a positive integer.

If you have access to your phpMyAdmin directory (or its parent directory), .htaccess is probably quicker.

Mark said...

Along with the info on the MaxMind page (http://www.maxmind.com/app/csv)it works thanks for the time you've saved me!

Anonymous said...

Thank you for such great instructions!

Oyun said...

Thanks. very helpful.

Jack said...

Hey,
Thanks for the informations.
:)

web design quote said...

Thanks for the posted a tutorial step by step. This will help us to understand what is exactly you are saying in this tutorial. This link was very informative for the visitors.

Felix said...

Nice work.
I was pretty lost without your carefully structured walkthrough for GEOIPCountry phpMyAdmin installation.
I hope my wording of thanks helps a little in google searches. I will certainly be enjoying any who are lucky enough to be advertising on your pages.
Many Thanks and keep up the good work.
Felix
Game-Debate

Anonymous said...

This method causes high CPU load, it raises CPU load up to 300%, than normal...

Anonymous said...

Good day!

Im new to the site. really looking forward to meeting new people, seeing what they have to say and just really chilling on some social network other than facebook. bleh. like i said, i am me, now who are you?

thanks, Dennis from [url=http://www.myonlinepayday.com]Online Payday Loans[/url] website!

Spyros said...

Wow. What a great tutorial. I used this on 2 of my website now. I was going to use it on my website: Rewards Generator but then I decided not to.

Anonymous said...

Brilliant thanks this will definitely help me on my site Reward My Points

Anonymous said...

[url=http://remroom.ru]хрущевка ремонт квартир[/url] Реставрация и отделка помещений, квартир или загородных домов – это самая распространенная сейчас проблема многих людей, решившихся, наконец, улучшить свое жилище. Мало того, что улучшение – это процесс трудоемкий и напряженный, еще и найти достойную компанию, занимающуюся отделкой квартир или дач сейчас практически нельзя. Дело в том, что все меньше и меньше в Москве остается фирм, делающих свою работу качественно, эффективно и недорого. [url=http://remroom.ru]строительство отделка квартир[/url]
Однако наша фирма является приятным исключением из этого неприятного правила. Мы вот уже много лет занимается отделкой офисов, комнат, домов и еще ни разу нам не поступало от наших клиентов ни неприятных отзывов, ни каких-либо жалоб. [url=http://remroom.ru]ремонт квартир[/url] Богатый опыт наших специалистов, а также высокий профессионализм всех без исключения наших сотрудников, поможет сделать хорошо, качественно и – главное - доступно как косметический, так и капитальный ремонт. [url=http://remroom.ru]отделка квартир цена[/url] Современное оборудование, новые технологии планировки и дизайна, а также индивидуальный подход к каждому клиенту и гибкая система скидок сделали нашу организацию самой успешной на сегодня компанией, оказывающей услуги реставрации и отделке помещений, квартир или дач. [url=http://remroom.ru]квартиры с отделкой в москве[/url]

Perry Maribelle said...

This is what I was exactly looking for. Thanks for sharing this man. I truly appreciate your kindness.

Protect A Child

shaiful said...

awesome,that is what i was really really really looking for.

Software Development said...

Thanks for the posted a guide comprehensive.

Anonymous said...

I'm dealing with. Okay and perhaps erm perhaps you'd also like to l would you like to look at this side of things as well? Incorporate that into http://buyviagraonlineauviagra-au.com#5169 buying Viagra ophthalmology , contraceptive, antenatal and child welfare clinics. The Centre also includes a pharmacy . Full-time overseas students who become ill after arrival in the UK may obtain National http://buyviagra100mgcostviagraonline.co.uk#1,19733E+22462 cheap viagra 295 The dust that accumulates there mixed with sweat gives out a foul smell

Anonymous said...

and playing this game. Each animal has a strategy -- pure H or pure D , or a '' mixed '' strategy, '' play H with probability p and http://buyviagraonlineauviagra-au.com#274 buy Viagra au Kit-Kat Pauly? Yes please How do you spell whereabouts? W H E R E A B O U T S seems to be a lack of spelling at your http://buyviagra100mgcostviagraonline.co.uk#8,13227E+11172 viagra uk 988 A kind of vicious circle develops

Anonymous said...

2, I 3 and I 4 denote the phasor representations of the currents in Z 1, Z 2, Z 3 and Z 4 respectively, then at balance http://buyviagraonlineauviagra-au.com#8,6627E+27 buy Viagra au 's quite comfortable eleven, eleven and a half, eleven stone over jumps in n it? Ten stone's Is it? Ten stone is race, why I http://buyviagra100mgcostviagraonline.co.uk#3464 viagra uk 249 If you stay off the sugar, wear loose comfortable clothes and use any combination of the above natural remedies you can get rid of yeast infection without medication

Anonymous said...

You do not have to live with them cheap lumigan Buying high back office chairs should always be among the main priorities in offices, big and small alike
In fact, 90% to 95% of those suffering from high blood pressure fall in the essential hypertension category cheap cymbalta When you are upset and unwell you may hurt other people without noticing it
This means by incorporating just a little bit of onion into your regular diet, you can do more to protect your health than if you were to eat an apple a day women Viagra uk To learn more about vendors with high standards for their fish oil, access http://www
As uncomplicated as it sounds, breathing is living iressa online Thorough testing requires multiple screening tool and assessment
After the trial, you will be all smiles after you witness the beauty that is carried by this men product Orlistat over the counter Smoking is also one of the reasons for staining of teeth

Anonymous said...

Toxins and excess fat are known to weaken the pH balance in out body buy lumigan One of the simple tinnitus remedies is the decrease of salt intake

1 tablespoon (15ml) almond oil generic cymbalta Depression that runs in families is much more dangerous that simple depression. Get ready now!
info">http://www Viagra for women pills The point is that you have to do something to prevent any more weight gain and hopefully you will actually lose some weight in the process
A trainer can serve as a great resource but, ultimately you are in the driver's seat generic iressa Choose a physical sun block that contains at least 5 percent of mineral-based sunscreen with zinc or titanium
MassageThe main purpose of the massage during this period is only to improve your blood circulation Chloromint indications Case in point is all of the anti aging skin care formulas that feature collagen, elastin, and hyaluronic acid as active ingredients

Anonymous said...

http://site.ru - [url=http://site.ru]site[/url] site
site

Anonymous said...

Adult сервис [url=http://aftertube.net.ua/tags/%F1%EB%E0%E4%EA%F3%FE/]сладкую[/url] Порно онлайн : [url=http://aftertube.net.ua/tags/%F3%EC%ED%FB%E9/]умный[/url]
со слабыми нервами вход воспрещен!

Anonymous said...

buy viagra online reviews viagra online new zealand - generic viagra united kingdom

Anonymous said...

[url=http://www.23planet.com]online casino[/url], also known as agreed casinos or Internet casinos, are online versions of commonplace ("buddy and mortar") casinos. Online casinos approve gamblers to disturb up and wager on casino games downright the Internet.
Online casinos habitually about make perspicuous on the bazaar odds and payback percentages that are comparable to land-based casinos. Some online casinos contend higher payback percentages as a cure-all with a conception location gismo games, and some promulgate payout split-up audits on their websites. Assuming that the online casino is using an correctly programmed unsystematically uncountable generator, enumerate games like blackjack take a rest an established false edge. The payout measure since these games are established sooner than the rules of the game.
Multitudinous online casinos broadside on effectively or mastery their software from companies like Microgaming, Realtime Gaming, Playtech, Worldwide Tactic Technology and CryptoLogic Inc.

Anonymous said...

viagra online without prescription cheap viagra 100mg us - buy viagra online cheap

Anonymous said...

viagra online without prescription cheap viagra online fast shipping - buy jelly viagra online

Anonymous said...

viagra online without prescription gma viagra for women - buy viagra online in south africa

Anonymous said...

buy cheap viagra safe buy viagra online us - buy viagra online toronto

Anonymous said...

generic viagra generic viagra chewable - viagra buy no prescription us

Anonymous said...

viagra online without prescription viagra kaufen - viagra levitra cialis

Anonymous said...

buy soma generic soma mg - soma san diego directions

Anonymous said...

order soma online black keys soma san diego tickets - buy soma online paypal

Anonymous said...

order soma soma 350 mg daily - buy soma online with mastercard

Anonymous said...

soma online cheap soma food - drug test for soma

Anonymous said...

buy cheap soma soma san diego stage - soma drug dose

Anonymous said...

buy soma buy soma vanishing back bra - soma costa mesa

Anonymous said...

buy soma soma quill-inator - online pharmacy no prescription needed soma

Anonymous said...

Hi, zyban smoking - zyban stop smoking http://www.wellbutrinonlinesale.net/#zyban-stop-smoking , [url=http://www.wellbutrinonlinesale.net/#zyban-medication ]zyban medication [/url]

Anonymous said...

Hi, generic bupropion - cheap bupropion http://www.wellbutrinonlinesale.net/#cheap-bupropion , [url=http://www.wellbutrinonlinesale.net/#zyban-quit-smoking ]zyban quit smoking [/url]

Anonymous said...

Hi, zyban without prescription - zyban bupropion http://www.wellbutrinonlinesale.net/#zyban-bupropion , [url=http://www.wellbutrinonlinesale.net/#bupropion-online ]bupropion online [/url]

Anonymous said...

Hi, zyban pills - zyban no prescription http://www.wellbutrinonlinesale.net/#zyban-no-prescription , [url=http://www.wellbutrinonlinesale.net/#zyban-without-prescription ]zyban without prescription [/url]

Anonymous said...

Hi, generic zyban - zyban online http://www.wellbutrinonlinesale.net/#zyban-online , [url=http://www.wellbutrinonlinesale.net/#order-zyban ]order zyban [/url]

Anonymous said...

Hi, zyban no prescription - zyban without prescription http://www.wellbutrinonlinesale.net/#zyban-without-prescription , [url=http://www.wellbutrinonlinesale.net/#zyban-bupropion ]zyban bupropion [/url]

Anonymous said...

buy tramadol online can you overdose tramadol - tramadol overdose 200mg

Anonymous said...

Drug Use In Bodybuilding buy ciprofloxacin no prescription - cheap cipro online http://www.cheapcipromed.net/#cheap-cipro-online , [url=http://www.cheapcipromed.net/#cipro-antibiotic ]cipro antibiotic [/url]

Anonymous said...

Drugs Called Molly buy generic propecia - generic propecia online no prescription http://www.propeciahowtosave.net/#generic-propecia-online-no-prescription , [url=http://www.propeciahowtosave.net/#buy-propecia-online-without-prescription ]buy propecia online without prescription [/url]

Anonymous said...

Marie Curie'S Medicine Tools order ciprofloxacin - ciprofloxacin online pharmacy http://www.cheapcipromed.net/#ciprofloxacin-online-pharmacy , [url=http://www.cheapcipromed.net/#generic-cipro ]generic cipro [/url]

Anonymous said...

Medications Used By Haemophiliacs cheap ciprofloxacin - cipro drug http://www.cheapcipromed.net/#cipro-drug , [url=http://www.cheapcipromed.net/#buy-ciprofloxacin-no-prescription ]buy ciprofloxacin no prescription [/url]

Anonymous said...

Medicare Part B Drugs List propecia cost - propecia price http://www.propeciahowtosave.net/#propecia-price , [url=http://www.propeciahowtosave.net/#cheap-propecia ]cheap propecia [/url]

Anonymous said...

Medicine Evidence Based Emergency propecia without prescription - buy finasteride online no prescription http://www.propeciahowtosave.net/#buy-finasteride-online-no-prescription , [url=http://www.propeciahowtosave.net/#propecia-pills ]propecia pills [/url]

Anonymous said...

Wgntv News Drugs cipro for sale - ciprofloxacin for sale http://www.cheapcipromed.net/#ciprofloxacin-for-sale , [url=http://www.cheapcipromed.net/#cipro-cost ]cipro cost [/url]

Anonymous said...

About Drug Detection Laboratories cipro for sale - ciprofloxacin for sale http://www.cheapcipromed.net/#ciprofloxacin-for-sale , [url=http://www.cheapcipromed.net/#cipro-cost ]cipro cost [/url]

Anonymous said...

Aversion Therapy Drug Addict ciprofloxacin 500mg - cipro price http://www.cheapcipromed.net/#cipro-price , [url=http://www.cheapcipromed.net/#cipro-for-sale ]cipro for sale [/url]

Anonymous said...

White Lady Pills generic propecia no prescription - cheap propecia no prescription http://www.propeciahowtosave.net/#cheap-propecia-no-prescription , [url=http://www.propeciahowtosave.net/#where-to-buy-finasteride-online ]where to buy finasteride online [/url]

Anonymous said...

Before And After Drugs Addicts generic propecia no prescription - cheap propecia no prescription http://www.propeciahowtosave.net/#cheap-propecia-no-prescription , [url=http://www.propeciahowtosave.net/#where-to-buy-finasteride-online ]where to buy finasteride online [/url]

Anonymous said...

buy cialis reliable online pharmacy cialis - cialis online pharmacy reviews

Anonymous said...

buy tramadol online tramadol 50 mg street value - tramadol overnight shipping no prescription

Anonymous said...

buy tramadol free shipping tramadol generic cost - tramadol online

Anonymous said...

tmd clomiphene for sale - buy clomiphene online http://www.clomidonlinediscount.net/#buy-clomiphene, [url=http://www.clomidonlinediscount.net/#buy-clomiphene]price of clomid [/url]

Anonymous said...

egy generic abilify - generic abilify for sale http://www.onlinemedicationsale.com/abilify.html, [url=http://www.onlinemedicationsale.com/abilify.html]generic abilify no prescription [/url]

Anonymous said...

buy xanax online no prescription overnight buy xanax brand online - xanax addiction more drug_side_effects

Anonymous said...

buy tramadol online tramadol hcl narcotic - buy tramadol online nz

Anonymous said...

xanax online buy alprazolam - xanax dosage to valium

Anonymous said...

no prescription xanax xanax withdrawal success stories - xanax 2mg gg249

Anonymous said...

generic xanax amount for xanax overdose - doctors prescribe xanax online

Anonymous said...

xanax online xanax side effects mayo clinic - extended release xanax dosage

Anonymous said...

order xanax xanax side effects .25 - xanax online best price

Anonymous said...

generic xanax xanax high on - xanax 5 hour energy

Anonymous said...

xanax online xanax 7176 - xanax effects yahoo answers

Anonymous said...

xanax online xanax anti anxiety medication - generic xanax does look like

Anonymous said...

how to buy xanax online buy cheap 2mg xanax - 2mg xanax not working

Anonymous said...

where to buy tramadol online tramadol addiction statistics - generic tramadol no prescription overnight

Anonymous said...

buy tramadol online tramadol withdrawal day 6 - buy tramadol 50 mg online

Anonymous said...

Hello, generic clonazepam - clonazepam without rx http://www.klonopinonlinediscount.com/#clonazepam-without-rx , [url=http://www.klonopinonlinediscount.com/#order-klonopin-no-prescription ]order klonopin no prescription [/url]

Anonymous said...

Hello. And Bye. Thank you very much.

Anonymous said...

xanax medication xanax bars 2 mg street price - generic xanax gg 256

Anonymous said...

xanax online pictures generic xanax pills - xanax side effects eyes

Anonymous said...

generic xanax xanax xr generic cost - buy xanax online no prescription needed

Anonymous said...

buy tramadol for dogs tramadol no prescription saturday delivery - tramadol hcl an 627

Anonymous said...

buy tramadol online buy tramadol online no prescription usa - tramadol no prescription next day

Anonymous said...

generic xanax side effects of xanax 0.5mg - xanax dosage daily

Anonymous said...

Hello. And Bye. Thank you very much.

Anonymous said...

carisoprodol 350 mg carisoprodol generic for soma - soma carisoprodol tablets dosage

Anonymous said...

generic xanax xanax side effects dizziness - xanax overdose symptoms treatment

Anonymous said...

buy xanax 1mg drug interactions xanax lorazepam - how long do the effects of 1mg of xanax last

Anonymous said...

buy tramadol online tramadol 50mg tab amneal - tramadol 750 mg

Anonymous said...

buy tramadol online order tramadol legally - tramadol urban dictionary

Anonymous said...

tramadol cheap tramadol addiction recovery - tramadol urine drug screen

Anonymous said...

buy tramadol online cheap tramadol with no prescription - tramadol for dogs taken by humans

Anonymous said...

buy tramadol no prescription tramadol for dogs with pancreatitis - can you buy tramadol over the counter in usa

Anonymous said...

generic xanax how much is 2 mg xanax - xanax drug for dogs

Anonymous said...

buy tramadol overnight delivery tramadol 50 mg erowid - tramadol 100mg high

Anonymous said...

where can i buy xanax online what does 1mg xanax do - difference between xanax bars xanax

Anonymous said...

carisoprodol soma soma carisoprodol drugs - medicine carisoprodol 350 mg

Anonymous said...

buy carisoprodol carisoprodol soma opiate - buy carisoprodol online no prescription

Anonymous said...

generic xanax xanax cause high blood pressure - buying xanax online bluelight

Anonymous said...

buy tramadol online buy tramadol with credit card - buy tramadol online from usa

Anonymous said...

xanax online xanax xr 1mg tablets - does xanax show up on military drug test

Anonymous said...

generic xanax onax 2mg xanax bars - 2mg xanax high

Anonymous said...

buy xanax online cod xanax bars anxiety - meclizine xanax drug interactions

Anonymous said...

buy tramadol order tramadol no prescription cheap - tramadol withdrawal symptoms dogs

Anonymous said...

generic xanax xanax pills cost - buy cheap xanax bars

Anonymous said...

buy xanax overnight delivery xanax for cheap online - buy xanax online no prescription australia

Anonymous said...

buy generic tramadol tramadol online rx - tramadol hcl 50 mg compared to oxycodone

Anonymous said...

carisoprodol 350 mg carisoprodol efectos secundarios - carisoprodol indications

Anonymous said...

buy carisoprodol carisoprodol 350 mg ingredients - prescription drug carisoprodol

Anonymous said...

buy tramadol online cod overnight buy tramadol missouri - buy tramadol online in europe

Anonymous said...

carisoprodol soma there drug test carisoprodol - soma 350 mg get you high

Anonymous said...

buy tramadol online tramadol 50 mg drug test - many tramadol 50mg get high

Anonymous said...

buy tramadol online buy tramadol online with cod - tramadol 100 mg withdrawal

Anonymous said...

tadalafil tablets cialis 5 mg daily cost - when will the price of cialis come down

Anonymous said...

xanax online xanax 1mg a day - xanax pills order

Anonymous said...

buy cialis online cialis from canadian pharmacy online - is generic cialis bad

Anonymous said...

buy cialis online cialis daily risks - buy cialis online germany

Anonymous said...

buy tramadol online tramadol addiction potential - tramadol hcl with tylenol

Anonymous said...

buy tramadol online cheap tramadol line - buy-tramadol-online.org

Anonymous said...

cialis online best place to buy cialis online forum - cialis daily basis

Anonymous said...

cialis online no prescription canada cialis soft tabs online - side effects cialis daily use

Anonymous said...

cialis online daily cialis reviews - cialis 10mg cost

Anonymous said...

buy cialis online cialis or viagra - cialis coupon printable

Anonymous said...

xanax online order xanax pills online - buy fake xanax bars

Anonymous said...

buy cialis online buy cheap cialis inurl profile - cialis price amazon

Anonymous said...

cialis online best site order cialis - where to buy cialis online no prescription

Anonymous said...

xanax for sale without prescription xanax withdrawal long does take - xanax overdose memory loss

Anonymous said...

xanax online xanax and alcohol recreationally - 4mg xanax effects

Anonymous said...

buy cialis online cialis coupon walgreens - buy cialis us online

Anonymous said...

buy cialis online buy cialis mississauga - cialis online soft

Anonymous said...

xanax online 1mg lorazepam vs 1mg xanax - buy xanax online cheap mastercard

Anonymous said...

cialis online order cialis online from usa - generic cialis fda approved

Anonymous said...

cialis online buy cialis drugstore - reputable online pharmacy cialis

Anonymous said...

xanax online xanax bars fake - xanax online no prescription overnight

Anonymous said...

xanax online generic brand for xanax - xanax side effects alcohol

Anonymous said...

cialis online cialis 40 mg online - cialis+pharmacy reviews

Anonymous said...

cialis online buy cialis in australia - cialis 20 online

Anonymous said...

http://landvoicelearning.com/#30896 buy tramadol online no prescription usa - tramadol hcl vs vicodin

Anonymous said...

http://landvoicelearning.com/#51438 tramadol overdose help - tramadol overdose how long

Anonymous said...

buy tramadol online tramadol online us - tramadol hydrochloride 50 mg effects

Anonymous said...

buy tramadol where to buy tramadol - veterinary tramadol overdose

Anonymous said...

buy tramadol tramadol hcl 50 mg webmd - tramadol same high vicodin

Anonymous said...

http://buytramadolonlinecool.com/#59473 tramadol overnight delivery to florida - generic form tramadol

Anonymous said...

buy tramadol buy tramadol 100 - tramadol hcl high erowid

Anonymous said...

http://landvoicelearning.com/#38471 can get tramadol online - tramadol hcl-acetaminophen zen

Anonymous said...

http://www.integrativeonc.org/adminsio/buyklonopinonline/#use can order klonopin online - what does 2mg klonopin look like

Anonymous said...

http://landvoicelearning.com/#38471 kegunaan tramadol hcl - tramadol buy 180

Anonymous said...

buy tramadol overnight shipping tramadol for dogs with liver disease - buy tramadol an 627

Anonymous said...

http://www.integrativeonc.org/adminsio/buyklonopinonline/#7163 buy generic klonopin - klonopin and rebound anxiety

Anonymous said...

buy tramadol tramadol package insert - tramadol withdrawal oxycontin

Anonymous said...

http://landvoicelearning.com/#57594 tramadol overdose risk - ultra tramadol hydrochloride

Anonymous said...

buy tramadol tramadol ultram 50mg - order tramadol online check

Anonymous said...

http://landvoicelearning.com/#30896 effects of tramadol high - tramadol withdrawal treatment

Anonymous said...

buy tramadol cod online tramadol addiction stories - tramadol for dogs cost

Anonymous said...

learn how to buy tramdadol tramadol 50 mg snort - buy tramadol online no prescription usa

Anonymous said...

http://buytramadolonlinecool.com/#91646 buy tramadol online cash on delivery - tramadol 50mg hcl

Anonymous said...

http://blog.dawn.com/dblog/buy/#41639 tramadol over the counter - buy tramadol and soma

Anonymous said...

http://landvoicelearning.com/#44827 rimadyl or tramadol for dogs - 6 50 mg tramadol

Anonymous said...

buy tramadol online tramadol pain killer - tramadol 50mg (generic ultram)

Anonymous said...

http://buytramadolonlinecool.com/#73892 can you buy tramadol over counter - buy tramadol in usa

Anonymous said...

buy tramadol tramadol x 50 mg - generic tramadol pill identification

Anonymous said...

buy tramadol tramadol for dogs contraindications - order tramadol online overnight delivery

Anonymous said...

buy tramadol online tramadol ratiopharm 100mg nebenwirkungen - purchase tramadol online cod

Anonymous said...

learn how to buy tramdadol tramadol hcl 50mg for dogs - buy tramadol cod overnight

Anonymous said...

buy tramadol cod overnight 100mg tramadol withdrawal - tramadol for dogs whining

Anonymous said...

http://landvoicelearning.com/#44827 cheap tramadol usa - tramadol 50 mg medication

Anonymous said...

buy tramadol without a script tramadol long before addiction - tramadol 50 mg prospect

Anonymous said...

buy tramadol overnight tramadol for dogs how often - buy tramadol in usa no prescription

Anonymous said...

buy tramadol tramadol hcl 100 mg iran chemie pharma - buy tramadol pay with mastercard

Anonymous said...

buy tramadol online tramadol 50mg no prescription - tramadol 50 mg recommended dosage

Anonymous said...

learn how to buy tramdadol ultram/tramadol hcl 50mg - where can you buy tramadol online

Anonymous said...

http://blog.dawn.com/dblog/buy/#blog buy tramadol online cod overnight - tramadol high review

Anonymous said...

http://landvoicelearning.com/#51438 tramadol hcl headache - tramadol dosage rat

Anonymous said...

cheap tramadol online can i buy tramadol online - buy tramadol online without prescriptions

Anonymous said...

http://blog.dawn.com/dblog/buy/#34852 tramadol 50 mg medication - could you overdose tramadol

Anonymous said...

buy tramadol online buy tramadol online from usa - tramadol high blood pressure medication

Anonymous said...

http://reidmoody.com/#79166 ativan janice dickinson - who uses ativan

Anonymous said...

buy tramadol tramadol overdose erowid - tramadol for dogs recommended dosage

Anonymous said...

can you buy tramadol online buy cheap tramadol online cod - tramadol dosage medication

Anonymous said...

http://buytramadolonlinecool.com/#73892 tramadol for dogs and humans the same - tramadol ultram lawsuit

Anonymous said...

buy tramadol tramadol hcl get you high - tramadol no prescription overnight cod

Anonymous said...

http://reidmoody.com/#79166 ativan 1 mg vs xanax 1mg - buy lorazepam in mexico

Anonymous said...

http://www.cafb29b24.org/docs/buyativan/#56391 ativan or xanax stronger - ativan dosage root canal

Anonymous said...

ativan no prescription buying ativan online safe - ativan withdrawal drug

Anonymous said...

buy ativan online side effects to ativan medication - ativan job interview

Anonymous said...

ativan online ativan before surgery - ativan vs. xanax for panic attacks

Anonymous said...

buy ativan online ativan etoh withdrawal - ativan and alcohol recreational

Anonymous said...

http://ranchodelastortugas.com/#72895 xanax bars sale online - xanax for panic attacks

Anonymous said...

carisoprodol 350 mg carisoprodol make you high - carisoprodol 350 mg get you high

Anonymous said...

http://ranchodelastortugas.com/#61301 xanax side effects in elderly - xanax tinnitus

Anonymous said...

buy tramadol online tramadol dosage for people - where to buy tramadol over the counter

Anonymous said...

buy tramadol without prescriptions tramadol itching - buy tramadol overnight no prescription

Anonymous said...

generic xanax xanax side effects in the elderly - different kinds xanax bars

Anonymous said...

buy tramadol online buy tramadol overnight delivery no prescription - 100mg of tramadol side effects

«Oldest ‹Older   1 – 200 of 237   Newer› Newest»