PHP会话变量在使用www或不使用www时丢失

PHP会话变量在使用www或不使用www时丢失,php,session-variables,Php,Session Variables,我的网站使用PHP会话跟踪登录用户。每一页都有会话启动;但是,在chrome中,当我将www.放在域名的from中时,它没有使用会话变量。当我在没有www的情况下将其替换回来时,它再次正常工作,因此变量不是未设置的,而是没有被使用 奇怪的是,在Firefox中,情况正好相反。www.工作而没有工作就没有。有办法解决这个问题吗?我遇到了麻烦,因为我正在使用PayPal重定向到我的网站,我不能让我的用户在之后直接注销和重新登录。www.example.com和example.com不是同一个网站。通

我的网站使用PHP会话跟踪登录用户。每一页都有会话启动;但是,在chrome中,当我将www.放在域名的from中时,它没有使用会话变量。当我在没有www的情况下将其替换回来时,它再次正常工作,因此变量不是未设置的,而是没有被使用

奇怪的是,在Firefox中,情况正好相反。www.工作而没有工作就没有。有办法解决这个问题吗?我遇到了麻烦,因为我正在使用PayPal重定向到我的网站,我不能让我的用户在之后直接注销和重新登录。

www.example.com和example.com不是同一个网站。通常是这样,但只是按照惯例。www.example.com是example.com的子域

因此,在example.com上设置的cookies将不会在www.example.com上使用,反之亦然,因为假设它们是同一事物是不安全的

通过将php.ini设置session.cookie_domain设置为。example.com替换为您自己的域名,您可以允许会话cookie在所有子域以及主域上工作,从而在一定程度上覆盖此行为。当然,www.example.com和example.com不是同一个网站。通常是这样,但只是按照惯例。www.example.com是example.com的子域

因此,在example.com上设置的cookies将不会在www.example.com上使用,反之亦然,因为假设它们是同一事物是不安全的


通过将php.ini设置session.cookie_domain设置为.example.com替换为您自己的域名,允许会话cookie在所有子域以及主域上工作,您可以在某种程度上覆盖此行为,当然

您应该在PHP中设置cookie_域,或者确保您的用户只看到有www或没有www的站点。您可以使用.htaccess apache server来实现这一点

为多个子域设置cookie域的示例:

session_set_cookie_params(0, '/', '.example.com'); 
session_start(); 

您应该在PHP中设置cookie_域,或者确保您的用户只看到有www或没有www的站点。您可以使用.htaccess apache server来实现这一点

为多个子域设置cookie域的示例:

session_set_cookie_params(0, '/', '.example.com'); 
session_start(); 

就会话cookie而言,www与不使用www是不同的。你应该选一个。这就是为什么像SO这样的网站会强制访问者删除www。而且,在不同的子域上有两个完全相同的网站不是一个好的做法。听起来好像会话cookie设置为在特定域下运行。我不知道这是怎么做到的,但是你可以检查会话cookie设置。无论是从www重定向,还是每次www在会话cookie会话方面与无www不同时返回。你应该选一个。这就是为什么像SO这样的网站会强制访问者删除www。而且,在不同的子域上有两个完全相同的网站不是一个好的做法。听起来好像会话cookie设置为在特定域下运行。我不知道这是怎么做到的,但是你可以检查会话cookie设置。无论是从www重定向还是每次返回,都可以通过在会话开始之前调用每个脚本来完成。默认设置为:session_set_cookie_params0,“/”,“.mydomain.com”;可以通过在会话开始之前调用来按脚本执行。默认设置为:session_set_cookie_params0,“/”,“.mydomain.com”;