我创建了一个PHP网站,它有三种不同的语言版本。这些语言可以通过$ _GET或$ _COOKIE设置,其中$ _GET是第一个被检查的语句,因此如果需要它可以覆盖cookie。如果我确定了我需要的语言,我会包含一个文件,其中包含我的所有翻译并设置cookie以供将来使用。代码看起来像这样:
<?php
if (isset($_GET['language'])) {
// if language in $_SET is English, load english translation and set a cookie for the future.
if ($_GET['language'] == 'EN') {
setcookie('language','EN', time()+31536000);
include 'tekstenEngels.php';
// if language in $_SET is French, load french translation and set a cookie for the future.
} elseif ($_GET['language'] == 'FR') {
setcookie('language','FR', time()+31536000);
include 'tekstenFrans.php';
// lastly if language in $_SET is Dutch, load Dutch translation and set a cookie for the future
} else {
setcookie('language','NL', time()+31536000);
include 'tekstenNederlands.php';
}
// the same but for cookies in case this isn't the first visit
} elseif (isset($_COOKIE['language'])) {
if ($_COOKIE['language'] == 'EN') {
include 'tekstenEngels.php';
} elseif ($_COOKIE['language'] == 'FR') {
include 'tekstenFrans.php';
} else {
include 'tekstenNederlands.php';
}
}
?>
这在我的locahost上工作正常,但在我的网络服务器上使用时似乎没有正确地写/读cookie。我有什么想法可能会丢失/做错了吗?
答案 0 :(得分:0)
确保您的php.ini文件允许使用Cookie。 如果没有,你可能想探索session_set_cookie_params。
答案 1 :(得分:0)
如果代码相同,但结果不同,则指向Web服务器的配置。创建以下文件,名为phpinfo.php
:
<?php
phpinfo();
?>
在本地主机和网络服务器上浏览,比较任何与cookie /会话相关的配置选项的结果。
答案 2 :(得分:0)
我作为嘉宾发布了这个问题。在清除我所有的cookie以加快查找我网站的cookie时,我已经“退出”了这个网站,所以我不能再更新我的问题了。
我有2个不同的页面使用几乎相同的PHP代码来检查语言:“主页”页面(index.php)和“更多信息”页面(info.php)。唯一的区别是重定向:在index.php页面上设置语言时,它将用户指向index.php页面,而info.php页面则指向用户返回info.php页面。
对于一些,仍然未知的原因,当更改index.php页面上的语言使得cookie保存正确,而在info.php页面上做同样的事情不起作用,我不得不刷新那里的页面工作,我真的不明白,因为它使用完全相同的代码。
然而,当更改info.php页面中的语言代码以重定向到index.php而不是info.php页面时,它突然全部起作用。
哇。我真的没有看到任何逻辑。
这个问题已得到解决,但我不知道如何...我猜它与服务器配置有关但我没有任何访问权限,所以我不能在那里做任何更改
这个问题可能会被关闭。