2017-02-02 3 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']; 

それはリージョンコードを見つけることができます。例。 Azerbaija AZ、ロシア語RU

ifでリダイレクトコードを書くにはどうすればよいですか? ex。場所AZはmysite.com/az/ にリダイレクトし、場所RUがmysite.com/ru/ にリダイレクトした場合、他のすべての領域がmysite.com/en/

おかげで良い一日

答えて

1

にリダイレクトする必要がある場合は一般的には基づいて、ユーザーの言語を設定することは良い考えではありませんIP単体 - 観光客が国を訪問しても、その言語を話さない場合はどうなりますか?また、いくつかの国では複数の言語を使用しています(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; 
} 

次の2つは、例えば、一致しない場合にのみリダイレクトチェックを置く必要があります - それはあなたが/ru/ですでにだとブラウザヘッダーがロシア語に設定されている場合/ru/にリダイレクトすることは無意味です。


手動状態次約$_SERVER['HTTP_ACCEPT_LANGUAGE']:受け入れ言語の

「HTTP_ACCEPT_LANGUAGE」
内容:現在のリクエストヘッダ、一方が存在する場合。例: 'en'速い答えのための

+0

感謝。 – Vaska

関連する問題