2013-11-09 43 views
0

我已经制作了一个以三种不同语言工作的PHP网站。这些语言可以通过$ _GET或者$ _COOKIE来设置,$ _GET是第一个被检查的,所以如果需要的话它可以覆盖cookie。如果我确定了我需要的语言,我会包含一个包含我所有翻译的文件并设置一个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不错,但它似乎并没有写/我的web服务器一起使用时,正确读取的cookie。任何想法我可能会错过/做错了什么?

回答

0

确保您的php.ini文件允许Cookie。 如果没有,您可能需要探索session_set_cookie_params

+0

Cookies已启用。有时我的代码就像一个魅力,它会记住所有正确的事情,而其他尝试我需要刷新我的页面以便代码成功执行。这真的让我发疯,因为我似乎无法在这里找到问题。 – Rijstkoek

+0

要追踪它,尝试将代码剥离到最小。例如:只有发布的代码后面跟着print_r($ _ COOKIE),没有任何其他条件,如果和其他条件。 如果这仍然是不可靠/随机的,它可能是一个服务器性能问题。有时[输出缓冲](http://php.net/manual/it/function.ob-start.php)可以解决这些幽灵般的错误。 – Joram

0

如果代码是相同的,但结果不同,它指向Web服务器的配置。在你的本地主机和您的网络服务器

<?php 
phpinfo(); 
?> 

浏览它,比较任何的Cookie /会话相关的配置选项的结果:创建以下文件,名为phpinfo.php

0

我以访客的身份发布了这个问题。在清除我的所有cookies以加快查找我网站的Cookie时,我已经“登出”了该网站,因此我无法再更新我的问题。

我有两个不同的页面,使用几乎相同的PHP代码来检查语言:“主页”(index.php)和“更多信息”页面(info.php)。唯一的区别是重定向:在index.php页面上设置语言时,它将用户指向index.php页面,而info.php页面将用户指向info.php页面。

对于一些仍然未知的原因,当改变index.php页面上的语言使得cookies在info.php页面上做同样的事情时无法正常保存,我不得不刷新页面它工作,我真的不明白,因为它使用的是相同的代码。

但是,当更改info.php页面中的语言代码以重定向到index.php而不是info.php页面时,它突然全部工作。

哇。我真的没有看到任何逻辑。

这个问题已修复,虽然我不知道如何...我猜它与服务器配置有关,但我没有任何访问权限,因此我无法进行任何更改那里。

此问题可能会被关闭。