Php example.com和www.example.com被视为不同的会话

Php example.com和www.example.com被视为不同的会话,php,.htaccess,url,Php,.htaccess,Url,所以我有一个小网站,要求用户使用用户名和密码登录。 除了一个小问题外,一切正常 当用户使用url登录时,他或她将被重定向到一个页面,在该页面的顶部栏中显示他的名字、姓氏和注销选项 但是,如果我在链接之前添加www,使其成为,则会为用户提供登录/注册选项 这是一个相当大的问题,因为当用户尝试登录时,他或她会收到一个反馈,表明他们已经登录 如何协调studeez.net和www.studeez.net以及所有后续URL,如studeez.ney/path/to/page和www.studeez.ne

所以我有一个小网站,要求用户使用用户名和密码登录。 除了一个小问题外,一切正常

当用户使用url登录时,他或她将被重定向到一个页面,在该页面的顶部栏中显示他的名字、姓氏和注销选项

但是,如果我在链接之前添加www,使其成为,则会为用户提供登录/注册选项

这是一个相当大的问题,因为当用户尝试登录时,他或她会收到一个反馈,表明他们已经登录


如何协调studeez.net和www.studeez.net以及所有后续URL,如studeez.ney/path/to/page和www.studeez.ney/path/to/page

您需要强制
www
无www
在同一站点上保持用户会话。您可以使用此htaccess条件重写到正确的域。此示例将强制使用
www

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^yoursite.com [NC]
RewriteRule ^(.*)$ http://www.yoursite.com/$1 [R=301,NC,L]
</IfModule>

重新启动发动机
重写基/
重写cond%{HTTP_HOST}^yoursite.com[NC]
重写规则^(.*)$http://www.yoursite.com/$1[R=301,北卡罗来纳州,北卡罗来纳州]

可能重复使用.htaccess文件或修改服务器配置以使用mod_rewrite,作为纯PHP解决方案,这应该可以正常工作:

$sname = session_name(); // Get the name of the session cookie.
if ( !isset($_SESSION) ) session_start(); // If a session has not been started then start one.
$sid = ( isset($_COOKIE[$sname]) ) ? session_id($_COOKIE[$sname]) : session_id();  // Get an encrypted session identifier.
setcookie($sname, $sid, time()+86400, "/", ".example.com", false, true); // Set the .example.com cookie so we can work across all sub-domains.

将.example.com更改为.strong>domain.tld格式中的任何域名,但不包含子域,但包括开头的句点。这应该设置一个cookie,该cookie可以跨您域的所有子域工作。

这可能是因为cookie仅设置为非www域。@anubhava我现在没有使用任何cookie。请查看下面的答案是否适用于您。谢谢,但是,对于后续的URL,如studeez.net/path/to/page/和www.studeez.net/path/to/page/这是否有效?他的示例所做的是将域从
example.com
更改为
www.example.com
,并且所有
/path/to/page
内容保持不变,所以基本上如果有人去哪里访问
http://example.com/some/page
它们实际上会被重定向到
http://www.example.com/some/page
@JohnKariuki是的,正如txpeace提到的那样。