2017-02-02 96 views
1

美好的一天,php語言自動重定向

我的網站有EN,RU,AZ語言。我怎樣才能讓腳本自動更改語言的位置? 這個腳本工作:

function getLocationInfoByIp(){ 
    $client = @$_SERVER['HTTP_CLIENT_IP']; 
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR']; 
    $remote = @$_SERVER['REMOTE_ADDR']; 
    $result = array('country'=>'', 'city'=>''); 
    if(filter_var($client, FILTER_VALIDATE_IP)){ 
    $ip = $client; 
    } 
    elseif(filter_var($forward, FILTER_VALIDATE_IP)){ 
    $ip = $forward; 
    } 
    else{ 
    $ip = $remote; 
    } 
    $ip_data = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$ip)); 
    if($ip_data && $ip_data->geoplugin_countryName != null){ 
    $result['country'] = $ip_data->geoplugin_countryCode; 
    $result['city'] = $ip_data->geoplugin_city; 
    } 
    return $result; 
    } 
    $location = getLocationInfoByIp(); 
    $loc= $location['country']; 

它有助於找到地區代碼。恩。阿塞拜疆AZ,俄羅斯RU

如何使用if編寫重定向代碼? ex。如果位置AZ重定向到mysite.com/az/ 如果位置RU重定向到mysite.com/ru/ 那麼所有其他地區應該重定向到mysite.com/en/

得益於良好的天

回答

1

通常這不是一個好主意,設置基礎上,爲用戶的語言僅知識產權 - 如果一個遊客訪問該國,但不會說這種語言?有些國家使用多種語言(如Beglium,人們說荷蘭語和/或法語)。

相反,您可以檢查瀏覽器中設置的標題(在本地檢測瀏覽器中使用的語言)並使用它。此外,有可能推翻這一點可能是一個好主意,餅乾對此很有好處。

$language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); 

switch ($language){ 
    case "ru": 
     header("Location: /ru/"); 
     exit; 
    case "az": 
     header("Location: /az/"); 
     exit; 
    case "en": 
    default: 
     header("Location: /en/"); 
     exit; 
} 

你應該把檢查,只有當兩者不匹配,例如重定向 - 這是毫無意義的,如果你在/ru/是已經和瀏覽器的標題設置爲俄語重定向到/ru/


手動狀態以下有關$_SERVER['HTTP_ACCEPT_LANGUAGE']

「HTTP_ACCEPT_LANGUAGE」
內容接受語言的:從當前請求頭,如果存在一個。例如:'en'。

+0

感謝快速回答。 – Vaska