PHP 无法在一个页面上检索 cookie



我的网站有两种语言(英语和德语(,用户可以通过单击按钮来选择。然后,它会设置一个 cookie 来存储此决定以供24h使用。我也在使用GitHub中的php-i18n类。它的工作原理是将所有语言文本存储在特定的*.ini文件中。根据所选语言,德语或英语文本通过PHP变量显示。我希望我解释得足够好。

这一切都有效,除了我的"法律细节"页面。由于这个页面有很多文字,我做了这个页面的两个版本,一个是英文的,一个是德语的。根据选择的语言,我想显示相应的页面版本。但不知何故,它最终总是成为"默认德语"版本。我可能错过了一些非常明显的东西,说明为什么我的代码不起作用。

标题中的PHP(动态,在所有页面上显示,然后显示所有页面(:

require_once 'i18n.class.php';
$i18n = new i18n('lang/lang_{LANGUAGE}.ini', 'langcache/', 'de');
// Parameters: language file path, cache dir, default language (all optional)
$i18n->setForcedLang('de');
// language buttons & set cookie
if(isset($_GET['lang'])) {
$lang=$_GET['lang'];
if ($lang == 'de') {
$i18n->setForcedLang('de');
setcookie('language', 'lang-de', time() + 86400, '/');
echo "german cookie set!";
}
if ($lang == 'en') {
$i18n->setForcedLang('en');
setcookie('language', 'lang-en', time() + 86400, '/');
echo "english cookie set!";
}
}
// get language cookie
if (isset($_COOKIE['language']) && $_COOKIE['language']== "lang-de") {
echo "german cookie is really set, now get it!";
$i18n->setForcedLang('de');
} else if (isset($_COOKIE['language']) && $_COOKIE['language']== "lang-en") {
echo "english cookie is really set, now get it!";
$i18n->setForcedLang('en');
} else {
echo "no cookie set";
}
// init object: load language files, parse them if not cached, and so on.
$i18n->init();

法律详细信息页面上PHP

include 'templates/header.php';
// show english or german legal details
if(isset($_GET['lang'])) {
$lang=$_GET['lang'];
if ($lang == 'de') {
echo "k, german impressum";
include 'impressum-de.php';
} else if ($lang == 'en') {
echo "english impressum";
include 'impressum-en.php';
}
} else if ($language == 'de') {
echo "german impressum b/c cookie";
include 'impressum-de.php';
} else if ($language == 'en') {
echo "english impressum b/c cookie";
include 'impressum-en.php';
} else {
echo "default German impressum";
include 'impressum-de.php';
}

按钮:

<div class="language">
<a href="?lang=de" name="lang-de" class="lang-de">DE</a>/
<a href="?lang=en" name="lang-en" class="lang-en">EN</a>
</div>

有人有一些意见吗?如何改进代码的想法也总是受到赞赏,因为我仍在学习。

试试这个:(不是"else if" ->它的"elseif"(

include 'templates/header.php';
// show english or german legal details
if(isset($_GET['lang'])) {
$lang=$_GET['lang'];
if ($lang == 'de') {
echo "k, german impressum";
include 'impressum-de.php';
} elseif ($lang == 'en') {
echo "english impressum";
include 'impressum-en.php';
}
} elseif ($language == 'de') {
echo "german impressum b/c cookie";
include 'impressum-de.php';
} elseif ($language == 'en') {
echo "english impressum b/c cookie";
include 'impressum-en.php';
} else {
echo "default German impressum";
include 'impressum-de.php';
}

最新更新