0

I've made a little PHP website which works in three different languages. These languages can either be set through a $_GET or a $_COOKIE with $_GET being the first to be checked so it can overwrite a cookie if needed. If I determine the language I need, I include a file which holds all my translations and set a cookie for future use. The code looks something like this:

<?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';
    }
}
?>

This works fine on my locahost but it doesn't seem to write/read the cookies correctly when used on my webserver. Any ideas what I could be missing/doing wrong?

4

3 回答 3

0

确保您的 php.ini 文件允许使用 cookie。如果没有,您可能想探索session_set_cookie_params

于 2013-11-09T17:02:40.043 回答
0

如果代码相同,但结果不同,则指向网络服务器的配置。创建以下文件,名为phpinfo.php

<?php
phpinfo();
?>

在您的本地主机和网络服务器上浏览到它,比较任何 cookie/会话相关配置选项的结果。

于 2013-11-09T17:05:55.947 回答
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 页面时,突然一切正常。

哇。我真的看不出这有什么逻辑。

这个问题是固定的,虽然我不知道如何......我猜它与服务器配置有关,但我没有任何访问权限,所以我无法在那里进行任何更改。

这个问题可能已经结束了。

于 2013-11-09T17:45:43.483 回答