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

时间:2013-09-28 14:51:46

标签: php .htaccess url

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

当用户使用网址studeez.net登录时,他/她将被重定向到顶部栏显示其名字,姓氏和注销选项的页面。

但如果我添加www。在链接之前,它变为www.studeez.net,用户将获得登录/注册选项。

这是一个非常重要的问题,因为当用户尝试登录时,他或她会收到他们已经登录的反馈。

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

2 个答案:

答案 0 :(得分:1)

您需要强制wwwno-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>

this question可能重复。

答案 1 :(得分:0)

使用.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更改为您的域名为。 domain.tld 格式,而不包含子域,但包括开头的句点。这应该设置一个适用于您所在域的所有子域的cookie。