-1

こんにちは、機能しないヘッダー関数に頭がおかしくなりました。

ユーザーがページ foo.php を呼び出すと、ヘッダーが付けられるという考えです。そのため、script.php からスクリプトを含めました

スクリプトは、受け入れられた言語に関する情報を

$_SERVER["HTTP_ACCEPT_LANGUAGE"])

これで、優先言語と国コードがわかりました。これを使用して、foo.php を適切な言語方向にヘッダー化する必要があります。script.php のコードは次のようになります。

if ($pref_language == 'af'){
    header('Location:en'.$_SERVER['SCRIPT_NAME']);
    exit;
}
if ($pref_language == 'sq'){
    header('Location:en'.$_SERVER['SCRIPT_NAME']);
    exit;
}

したがって、これらの例は foo.php を次のディレクトリにヘッダー化します

ルート/en/foo.php

root/scripts/script.php にある script.php だけを呼び出すと、root/en/scripts/script.php のヘッダーが付けられます。そのため、すべての if-statement に header(); を使用する if-condition を追加したいと思います。root/scripts/ 以外のファイルに対してのみ行われます。

だから私は追加しました:

$filename = $_SERVER['SCRIPT_NAME'];
$path = $_SERVER['HTTP_HOST']."/scripts".$_SERVER['SCRIPT_NAME'];

if (isset($path == false)){

    if ($pref_language == 'af'){
        header('Location:en'.$_SERVER['SCRIPT_NAME']);
        exit;
    }
    if ($pref_language == 'sq'){
        header('Location:en'.$_SERVER['SCRIPT_NAME']);
        exit;
    }
}

それは機能しません。誰かが私を助けてくれれば、本当に感謝しています。

どうもありがとう。

4

1 に答える 1

1

これはあなたの解決策になる可能性がありますが、ある意味ではばかげていますが、仕事をします:

<?php

$unwanted_dir = "/scripts";

// this will make sure that the script name doesnt start with "/scripts" 
if (substr($_SERVER['SCRIPT_NAME'], 0, strlen($unwanted_dir)) != $unwanted_dir){

    if ($pref_language == 'af'){
        header('Location:en'.$_SERVER['SCRIPT_NAME']);
        exit;
        }
    if ($pref_language == 'sq'){
        header('Location:en'.$_SERVER['SCRIPT_NAME']);
        exit;
        }
}
?>

別の方法は正規表現ですが、これはより単純です

言語の選択をより動的にすることをお勧めします。すなわち:

<?php

$unwanted_dir = "/scripts";
$pref_language == 'af';  // dynamicaly set the language
$full_path = '/home/php/site/';

// this will make sure that the script name doesnt start with "/scripts" 
if (substr($_SERVER['SCRIPT_NAME'], 0, strlen($unwanted_dir)) != $unwanted_dir){

    if (is_dir($full_path . $pref_language)){
        header('Location:'$full_path . $pref_language . $_SERVER['SCRIPT_NAME']);
    }
    else{
        echo "Sorry, we don't support your language";
        // or
        // header('Location:go/to/unsopported/languages.php');
    }

    exit;
}
?>
于 2012-12-13T19:53:45.533 に答える