Home arrow PHP arrow Page 4 - Generating Web Pages in Multiple Languages with a PHP IP-to-Country Mapping Application

Building a simple front controller - PHP

If you’re a PHP developer interested in learning how to develop an IP-to-country application that can be integrated into any existing web site, then look no further. Welcome to the third part of a series on developing an IP-to-country mapping application with PHP. Made up of four approachable tutorials, this series teaches you how to create a program like this by using a single MySQL lookup table, and shows you how to use this program to enrich your own web sites with geo-location capabilities.

TABLE OF CONTENTS:
  1. Generating Web Pages in Multiple Languages with a PHP IP-to-Country Mapping Application
  2. Review: building IP-to-country mapping applications
  3. Building web pages in different languages
  4. Building a simple front controller
By: Alejandro Gervasio
Rating: starstarstarstarstar / 5
February 18, 2009

print this article
SEARCH DEV SHED

TOOLS YOU CAN USE

advertisement

As I said in the section that you just read, it's possible to generate complete web pages in different languages through the use of a simple front controller. Again, I'm not saying that this is the only way to accomplish this, but it's one of the simplest to use.

The following code sample shows how to utilize a basic PHP front controller to build the header, body and footer sections of a web page, depending on the countries from which users are accessing the page:


// define 'MySQL' class

class MySQL{

private $mysqli;

private $result;

public function __construct($host='localhost',$user='user',$password='password',$database='database'){

// connect to MySQL and select database

$this->mysqli=new mysqli($host,$user,$password,$database);

if(mysqli_connect_errno()){

throw new Exception('Error connecting to MySQL: '.$this->mysqli->error);

}

}

// run SQL query

public function query($query){

if(!$this->result=$this->mysqli->query($query)){

throw new Exception('Error running SQL query: '.$this->mysqli->error);

}

}

// fetch one row

public function fetchRow(){

while($row=$this->result->fetch_assoc()){

return $row;

}

return false;

}

}


// this is the front controller

try{

// connect to MySQL and select database

$db=new MySQL('host','user','password','database');

// get user IP address

$ip=sprintf('%u',ip2long($_SERVER['REMOTE_ADDR']));

// Map IP Address to country using 'iptocountry' database

$db->query("SELECT three_chars_country FROM iptocountry WHERE lower_bound <=$ip AND upper_bound >= $ip LIMIT 1");

// get row from database table

$row=$db->fetchRow();

// get 3-char country code

$code=$row['three_chars_country'];

// generate web page depending on country code

require_once 'header_'.$code.'.php';

require_once 'body_'.$code.'.php';

require_once 'footer_'.$code.'.php';

}

catch(Exception $e){

echo $e->getMessage();

exit();

}


That was very easy to code and read! As shown before, the lookup MySQL table is used to retrieve the 3-char country code that corresponds to the user IP, and then this value is utilized to generate the appropriate web page sections via a few PHP includes.

Obviously, this is a quick and dirty approach that will let you build web documents in a multi-lingual fashion, but certainly it isn't the only one. Anyway, the above example should help you to start building IP-to-country mapping applications with PHP very quickly.

Final thoughts

In this third installment of the series, you learned how to build dynamic web pages in different languages by using the previous "iptocountry" lookup MySQL table. As you saw before, generating web documents by way of a multi-language platform is indeed a straightforward process, since the hard work is charged mostly to this table.

In the last article, I'll be discussing how to build a simple IP-to-country mapping application by using the Code Igniter PHP framework, in this way taking advantage of the functionality given by the Model-View-Controller pattern.

Now that you've been warned, you won't want to miss the final chapter of this series!



 
 
>>> More PHP Articles          >>> More By Alejandro Gervasio
 

blog comments powered by Disqus
escort Bursa Bursa escort Antalya eskort
   

PHP ARTICLES

- Hackers Compromise PHP Sites to Launch Attac...
- Red Hat, Zend Form OpenShift PaaS Alliance
- PHP IDE News
- BCD, Zend Extend PHP Partnership
- PHP FAQ Highlight
- PHP Creator Didn't Set Out to Create a Langu...
- PHP Trends Revealed in Zend Study
- PHP: Best Methods for Running Scheduled Jobs
- PHP Array Functions: array_change_key_case
- PHP array_combine Function
- PHP array_chunk Function
- PHP Closures as View Helpers: Lazy-Loading F...
- Using PHP Closures as View Helpers
- PHP File and Operating System Program Execut...
- PHP: Effects of Wrapping Code in Class Const...

Developer Shed Affiliates

 


Dev Shed Tutorial Topics: