更改www会使会话过期

时间:2012-03-12 17:08:50

标签: php session

我有一个链接到银行的商家网站。 我已在银行中定义了此成功网址:

http://www.mydomain.com/deposit.php

当用户开始付款流程时,他会进入银行网站,付款后会重定向到我网站上的成功网址。 如果用户使用此URL(没有www)进入我的网站:

http://mydomain.com/

会话过期,他应该再次登录。但当他输入此网址时:

http://www.mydomain.com/

会话不会过期,一切都很好。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

问题是您的会话Cookie可能与www.mydomain.com特别相关,因此,当您访问mydomain.com时,浏览器会选择不发送会话Cookie。

查看ini_set函数和session.cookie_domain值。

if (count(explode('.', $domain)) > 2) {
    ini_set('session.cookie_domain', $domain);
}

答案 1 :(得分:1)

你可以强迫www。 (或仅使用http://mydomain.com强制使用.htaccess文件。

RewriteCond %{HTTP_HOST} !^www.mydomain\.com [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R]

!在RewriteCondition中告诉服务器当地址不等于以下内容时,将其重定向到RewriteRule。

你可以在网上使用.htaccess找到更多重写技巧。

注意:要使其正常工作,您需要先在.htaccess文件中启用此功能:

RewriteEngine On

确保您的Apache(或其他主机)配置支持mod_rewrite。

答案 2 :(得分:1)

取自HTML5 Boilerplate .htaccess:

 <IfModule mod_rewrite.c>
   RewriteCond %{HTTPS} !=on
   RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
   RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
 </IfModule>

将其放在.HTACCESS文件中可以解决问题。但是,其他人必须详细说明这个问题究竟是什么原因。

编辑:对我而言,就像Pablo Santa Cruz一样。