Php 未正确保存/读取Cookie
我制作了一个PHP小网站,它可以用三种不同的语言工作。这些语言可以通过$\u-GET设置,也可以通过$\u-COOKIE设置,首先检查$\u-GET,以便在需要时覆盖COOKIE。如果我确定了我需要的语言,我会包含一个保存我所有翻译的文件,并设置一个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
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。如果这仍然不可靠/随机,则可能是服务器性能问题。有时我们可以解决这些可怕的错误。