PHP Page 4 - Generating Web Pages in Multiple Languages with a PHP IP-to-Country Mapping Application |
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!
blog comments powered by Disqus |
|
|
|
|
|
|
|