Php 为什么我的本地化cookie似乎不想更改?
为什么我不能换饼干 如果你选择了一种你不能改变的语言。如果你想改变语言,你必须清空你的cookies。为什么呢Php 为什么我的本地化cookie似乎不想更改?,php,cookies,localization,internationalization,logic,Php,Cookies,Localization,Internationalization,Logic,为什么我不能换饼干 如果你选择了一种你不能改变的语言。如果你想改变语言,你必须清空你的cookies。为什么呢 if (isset($_GET['setLang']) && $_GET['setLang'] == 'en' || isset($_COOKIE['setLang']) && $_COOKIE['setLang'] == 'en') { setcookie("setLang", 'en', time()+(3600*12)); //expires i
if (isset($_GET['setLang']) && $_GET['setLang'] == 'en'
|| isset($_COOKIE['setLang']) && $_COOKIE['setLang'] == 'en') {
setcookie("setLang", 'en', time()+(3600*12)); //expires in 12 hours
include('language/en/common.php');
}
elseif (isset($_GET['setLang']) && $_GET['setLang'] == 'se'
|| isset($_COOKIE['setLang']) && $_COOKIE['setLang'] == 'se') {
setcookie("setLang", 'se', time()+(3600*12)); //expires in 12 hours
include('language/se/common.php');
}
else if (isset($_GET['setLang']) && $_GET['setLang'] == 'fr'
|| isset($_COOKIE['setLang']) && $_COOKIE['setLang'] == 'fr') {
setcookie("setLang", 'fr', time()+(3600*12)); //expires in 12 hours
include('language/fr/common.php');
}
// default language is english
else {
include('language/en/common.php');
}
你当然可以换饼干。您无法使用那里的逻辑更改语言,因为按照您的编写方式,
$\u COOKIE
中的现有设置将始终覆盖$\u GET
中的设置(除了en
,其中将首先检查$\u GET
,因此,如果您开始使用另一种语言,现在应该可以切换到en
)。如果您希望能够更改语言,则需要首先对$\u GET
执行所有检查,然后对$\u COOKIE
执行所有检查。您当然可以更改COOKIE。您不能使用已有的逻辑更改语言,因为按照您编写语言的方式,$\u COOKIE
中的现有设置将始终结束使用$\u GET
中的设置(除了en
,其中将首先检查$\u GET
,因此如果您使用另一种语言,现在应该可以切换到en
)。如果你想改变语言,你需要先对$\u GET
进行所有检查,然后对$\u COOKIE
进行所有检查。逻辑也伤害了我的大脑
$language = $_GET['setLang'] || $_COOKIE['setLang']) || 'en';
setcookie("setLang", $language, time()+(3600*12));
include('language/' . $language . '/common.php');
应该达到同样的效果,并解决您的cookie问题(尽管未经测试)。逻辑也伤害了我的大脑
$language = $_GET['setLang'] || $_COOKIE['setLang']) || 'en';
setcookie("setLang", $language, time()+(3600*12));
include('language/' . $language . '/common.php');
应该达到同样的效果并修复cookie问题(尽管未经测试)
setcookie()定义要删除的cookie
与HTTP的其余部分一起发送
标题。和其他标题一样,cookies
必须在中的任何输出之前发送
您的脚本(这是一个协议)
限制)。这要求您
将此函数的调用放在
任何输出,包括和
标记以及任何空格
setcookie()定义要删除的cookie
与HTTP的其余部分一起发送
标题。和其他标题一样,cookies
必须在中的任何输出之前发送
您的脚本(这是一个协议)
限制)。这要求您
将此函数的调用放在
任何输出,包括和
标记以及任何空格
阅读那些逻辑伤害了我的大脑:(.阅读那些逻辑伤害了我的大脑:(.或者更好的是,为了让事情更清楚,从两个位置中选择一个作为“规范语言源”然后你就有了另一个源覆盖。例如,使
$\u GET
成为规范源,这样你就有了一个包含的小模糊,如果$\u GET
不存在,就有了cookie覆盖,并将$\u GET
设置为默认值或者更好的是,为了让事情更清楚,从两个位置中选择一个作为“规范语言源”然后你就有了另一个源覆盖。例如,使$\u GET
成为规范源,这样你就有了一个包含的小模糊,如果$\u GET
不存在,就有了cookie覆盖,并将$\u GET
设置为默认值ents。请不要这样做。在盲目信任用户的输入并将其用于包含之前,至少要有一个允许的语言代码列表并对此进行验证。(实际上,由于最后一个术语是'en'
,$language
将始终是真的
)请不要这样做。在盲目信任用户的输入并将其用于包含之前,至少要有一个允许的语言代码列表并对此进行验证。(实际上,由于最后一个术语是'en'
,$language
将始终是真的
)