0

現在、言語スクリプトに取り組んでおり、Cookie を使用しています。

setcookie("lang", "nl", time() + (24 * 60 * 60));
if(isset($_GET['lang'])) {
    $_COOKIE['lang'] = $_GET['lang'];
}

mysite/ ?lang=enにアクセスするとサイトは英語になりますが、mysite/ にアクセスすると主要言語 (オランダ語) に戻ります。Cookie が設定されているため、Google Chrome で情報を確認できますが、機能していません。

Print_r(mysite/) (言語設定前)

Array ( [lang] => nl ) 

Print_r(mysite/?lang=en) (新しい言語を設定)

Array ( [lang] => en )

Print_r(mysite/) (?lang=en を削除した後)

Array ( [lang] => nl ) 

このスクリプトが安全でないことはわかっていますが、現在は機能していません。作業後にセキュリティを追加します。

4

1 に答える 1

1

これは、Cookie の言語を毎回「nl」に設定してサイトにアクセスし、$_GET['lang']設定した場合にのみ別の言語に設定するためです。しかし$_GET['lang']、再び「nl」にリセットされることはありません。

setcookie("lang", "nl", time() + (24 * 60 * 60));

if(isset($_GET['lang'])) {
    $_COOKIE['lang'] = $_GET['lang'];
}

そのはず:

if (!isset($_COOKIE['lang'])) {
    setcookie("lang", "nl", time() + (24 * 60 * 60));
}

if (isset($_GET['lang'])) {
    setcookie("lang", $_GET['lang'], time() + (24 * 60 * 60));

    $_COOKIE['lang'] = $_GET['lang'];
}

setcookie を使用すると、$_COOKIE には保存されず、サイトの次のロード後にのみ保存されます。

于 2013-10-23T11:59:57.827 に答える