Php 在我关闭选项卡后,Cookies将消失

Php 在我关闭选项卡后,Cookies将消失,php,cookies,Php,Cookies,我知道代码是有效的,因为我在登录前检查是否有cookies,但没有。我登录了,里面有饼干。我关闭选项卡(而不是浏览器),在新选项卡中重新打开它,Cookie就不存在了。我不确定我是否忽略了什么,但我不确定这里到底是什么 感谢您提供的任何帮助您的代码应按照您的描述工作,前提是: 1) 服务器端不会干扰cookie的值 2) 您还没有告诉浏览器将所有cookie视为会话cookie 你是否已经用设置和读取cookie所需的最少代码构建了一个测试平台?从您发布的代码片段来看,您的代码中显然有更多的内容

我知道代码是有效的,因为我在登录前检查是否有cookies,但没有。我登录了,里面有饼干。我关闭选项卡(而不是浏览器),在新选项卡中重新打开它,Cookie就不存在了。我不确定我是否忽略了什么,但我不确定这里到底是什么


感谢您提供的任何帮助

您的代码应按照您的描述工作,前提是:

1) 服务器端不会干扰cookie的值 2) 您还没有告诉浏览器将所有cookie视为会话cookie

你是否已经用设置和读取cookie所需的最少代码构建了一个测试平台?从您发布的代码片段来看,您的代码中显然有更多的内容。并尝试在不同的浏览器中进行测试

比如:

if(isset($_POST['remember'])) {
    if(!isset($_COOKIE['tracker_id'])) {
        setcookie('tracker_id', $_SESSION['id'], time()+2592000);
        setcookie('tracker_username', $_SESSION['username'], time()+2592000);
        setcookie('tracker_rsn', $_SESSION['rsn'], time()+2592000);
    }
}


C.

如果满足以下条件,您的代码应该按照您的描述工作:

1) 服务器端不会干扰cookie的值 2) 您还没有告诉浏览器将所有cookie视为会话cookie

你是否已经用设置和读取cookie所需的最少代码构建了一个测试平台?从您发布的代码片段来看,您的代码中显然有更多的内容。并尝试在不同的浏览器中进行测试

比如:

if(isset($_POST['remember'])) {
    if(!isset($_COOKIE['tracker_id'])) {
        setcookie('tracker_id', $_SESSION['id'], time()+2592000);
        setcookie('tracker_username', $_SESSION['username'], time()+2592000);
        setcookie('tracker_rsn', $_SESSION['rsn'], time()+2592000);
    }
}


C.

您如何检查cookies是否存在?检查cookies数组并不能告诉您全部情况。如果您还没有,请下载FireFox的WebDeveloper插件。它具有查看、编辑和删除您所在站点的Cookie的功能。登录后查看您的Cookie。这将使您了解浏览器实际设置的内容。然后关闭浏览器并再次打开,访问站点,然后再次查看cookie。看看他们是否还在那里,只是没有被阅读

我从中学到,显式设置cookie路径和域是一个非常好的主意,而不是让PHP默认设置。否则,来自mydomain.com的cookies将具有与www.mydomain.com不同的路径,这可能导致www cookies无法从mydomain.com和其他有趣的内容读取。我们现在总是明确地设置cookies,在6个月的时间里,我们浪费了大约一周的开发时间来跟踪这个问题


如果路径不是问题所在,您可能会无意中删除cookie。当代码运行时,您从会话中传递的值是否始终存在?一个假值告诉PHP删除一个cookie,如果数组中没有定义这些值,并且您没有很强的错误报告级别,则可能会发生意外情况。

您如何检查cookie是否存在?检查cookies数组并不能告诉您全部情况。如果您还没有,请下载FireFox的WebDeveloper插件。它具有查看、编辑和删除您所在站点的Cookie的功能。登录后查看您的Cookie。这将使您了解浏览器实际设置的内容。然后关闭浏览器并再次打开,访问站点,然后再次查看cookie。看看他们是否还在那里,只是没有被阅读

我从中学到,显式设置cookie路径和域是一个非常好的主意,而不是让PHP默认设置。否则,来自mydomain.com的cookies将具有与www.mydomain.com不同的路径,这可能导致www cookies无法从mydomain.com和其他有趣的内容读取。我们现在总是明确地设置cookies,在6个月的时间里,我们浪费了大约一周的开发时间来跟踪这个问题


如果路径不是问题所在,您可能会无意中删除cookie。当代码运行时,您从会话中传递的值是否始终存在?一个假值告诉PHP删除一个cookie,如果数组中没有定义这些值,并且您没有很强的错误报告级别,则可能会发生意外情况。

您确定cookie确实包含一个值吗?是否有可能无意中触发了一些使cookie过期的代码?也许你应该发布更多的代码?(我只是假设:)佩卡-是的。我确保它们是使用Firefox插件设置的,并且它们似乎正常工作。Karim-唯一使它们过期的代码是在您单击注销时运行的,所以我认为这是不可能的。您确定Cookie确实包含一个值吗?是否有可能无意中触发了使Cookie过期的某些代码?也许你应该发布更多的代码?(我只是假设:)佩卡-是的。我确保它们是使用Firefox插件设置的,并且它们似乎正常工作。Karim-唯一使它们过期的代码是在您单击注销时运行的,所以我认为这是不可能的。用你发布的代码对它进行了测试,效果很好。我想这意味着我有一些代码或干扰。我将进一步研究。使用您发布的代码对其进行测试,结果很好。我想这意味着我有一些代码或干扰。我将进一步研究。它们是在我登录时设置的(我正在使用该加载项进行检查),我关闭并重新打开浏览器,它们是未设置的。我删除了任何可能使它不稳定的代码,但它仍在发生。我将继续前进,稍后再回来,因为这真的开始浪费我的时间。(不管怎么说,这是一个周末的项目。没什么大不了的。)如果你想继续,没问题,但你没有真正说明Web开发人员告诉你的。。。cookie过期设置是否正确?如果向前移动一页,cookies是否也会消失?也就是说,进入登录页面,发布到登录表单,然后进入网站上的任何其他页面?如果是这样的话,那么你是无意中删除了cookies。过期日期是准确的,并且在我更改页面时它们不会消失。现在,如果我关闭选项卡并返回,它们将不会出现,除非我刷新页面。当我关闭浏览器时