Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未正确保存/读取Cookie_Php_Cookies - Fatal编程技术网

Php 未正确保存/读取Cookie

Php 未正确保存/读取Cookie,php,cookies,Php,Cookies,我制作了一个PHP小网站,它可以用三种不同的语言工作。这些语言可以通过$\u-GET设置,也可以通过$\u-COOKIE设置,首先检查$\u-GET,以便在需要时覆盖COOKIE。如果我确定了我需要的语言,我会包含一个保存我所有翻译的文件,并设置一个cookie供将来使用。代码如下所示: <?php if (isset($_GET['language'])) { // if language in $_SET is English, load english translatio

我制作了一个PHP小网站,它可以用三种不同的语言工作。这些语言可以通过$\u-GET设置,也可以通过$\u-COOKIE设置,首先检查$\u-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';
    }
}
?>

确保您的php.ini文件允许cookies。

如果没有,您可能希望进行探索。

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

<?php
phpinfo();
?>


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

我以来宾身份发布了这个问题。在清除所有cookie以加快查找我网站的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页面时,突然一切正常

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

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


此问题可能已结束。

Cookies已启用。有时,我的代码就像一个符咒,它能正确地记住一切,而在其他尝试中,我需要刷新我的页面,以便成功地执行代码。这真的让我抓狂,因为我似乎找不到这里的问题。要找到它,试着将代码剥离到最低限度。例如:只有发布的代码后跟一个print_r($_COOKIE),没有任何其他条件,if和else。如果这仍然不可靠/随机,则可能是服务器性能问题。有时我们可以解决这些可怕的错误。