Jump to content
php.lv forumi

Ja mājas lapa ir 3 valodās: LV,RUS,ENG. Redirect


Ameriks

Recommended Posts

Īss scripts, kā, atkarībā no IP adreses, redirektot uz īsto valodu.

 

Īsumā ideja, kā darbojas:

Viņš pārbauda, vai klienta IP ir sarakstā, kurā ir IP adreses no šādām valstīm:

Latvijas - LV; Krievijas - RU; Ukrainas - UA; Kazakstānas - KZ; Kirgistānas - KG; Baltkrievijas - BY.

 

Ja klients ir no LV, tad pāradresē uz LV lapu,

ja klients ir no RU, UA, KZ, KG, BY, tad pāradresē uz RU lapu,

ja klients ir no kādas citas valsts, tad pāradresē uz ENG lapu.

 

<?php
/*
* LvRusEng PHP Redirect Class
* Version: 1.0
* Ameriks@gmail.com
*
* Don't delete this.
* Thanks to [url="http://www.phpclasses.org/browse/file/9684.html"]http://www.phpclasses.org/browse/file/9684.html[/url]
*/

class CountryFromIP {
// thanks to phpclasses.com
private function GetIP() {
	if ($_SERVER['HTTP_X_FORWARDED_FOR']) {
				$ip=explode(', ', $_SERVER['HTTP_X_FORWARDED_FOR']);
				return long2ip(ip2long(array_pop($ip)));		
	} else return $_SERVER['REMOTE_ADDR'];		
}
public function Country() {
	$ip = sprintf("%u", ip2long($this->GetIP()));	
	$cs = file('ip_lv_rus.txt');	
	for($i=0; $i<count($cs); $i++) {
		$arr = explode(' ', $cs[$i]);			
		if($ip >= $arr[0] && $ip <= $arr[1] ) return $arr[2];			
	}
	return "EN";
}	
}
$c = new CountryFromIP();
$countryName =  $c->Country();
switch (trim($countryName)) {
case "LV":
header('Location: [url="http://www.ameri.lv/lv/');"]http://www.ameri.lv/lv/');[/url]
break;
case "RU":
case "KZ":
case "KG":
case "BY":
case "UA":
header('Location: [url="http://www.ameri.lv/rus/');"]http://www.ameri.lv/rus/');[/url]
break;
default:
header('Location: [url="http://www.ameri.lv/eng/');"]http://www.ameri.lv/eng/');[/url]
break;
}
?>

 

IP datubāze atrodas - http://www.ameri.lv/ip_lv_rus.txt

 

Realizēts dzīvē šeit - www.ameri.lv

 

 

Īpaši daudz neesmu testējis, līdz ar to nemāku teikt, vai darbojas 100% pareizi.

 

Cerams, ka kādam noderēs ;)

Edited by Ameriks
Link to comment
Share on other sites

×
×
  • Create New...