为http://thewebsite.com和http://www.thewebsite.com存储单独的cookie?

时间:2010-10-17 19:02:55

标签: php mysql cookies login

我的朋友和我正在使用PHP和MySQL创建基于cookie的登录系统,当用户登录时,会保存存储其登录信息的cookie。问题是,对于每个网址http://thewebsite.comhttp://www.thewebsite.com,都会存储单独的Cookie。

是否有解决方案可以让我们为多个网址保存相同的Cookie,或者我们是否必须每次都将用户重定向到http://www.thewebsite.com

如果是这样,检查URL中是否存在“www”并重新定向的简单方法是什么?

3 个答案:

答案 0 :(得分:3)

查看domain参数:http://php.net/manual/en/function.setcookie.php 它准确地描述了您所拥有的场景。

答案 1 :(得分:3)

将域参数用于setcookie

  

Cookie所在的域名   有空。制作饼干   可用于所有子域   example.com(包括example.com   然后你将它设置为   '.example.com的'。有些浏览器   将不接受cookie   初始。,»RFC 2109要求它   包括在内。将域设置为   'www.example.com'或   '.www.example.com'将成为   cookie仅在www中提供   子域。

答案 2 :(得分:0)

如果您使用的是setcookie且未在参数中指定域,则setcookie将不会设置相应的参数在 Set-Cookie 标题字段中(这也适用于session.cookie_domain)。

现在,如果不存在 Domain 参数,则用户代理将域值默认为请求主机(请参阅RFC 2109 section 4.3.1):

  

用户代理对缺少的可选属性应用这些默认值:

     
      
  • 域 - 默认为请求主机。 (请注意,request-host开头没有点。)
  •   

如果存在 Domain 参数,则其值必须以点开头,否则用户代理将拒绝该Cookie(请参阅RFC 2109 section 4.3.2):

  

为防止可能的安全或隐私侵犯,如果满足以下任何条件,则用户代理拒绝cookie(不得存储其信息):

     
      
  • “域”属性的值不包含嵌入点或不以点开头。
  •   

因此,正如setcookie手册页上所述,如果您想在 example.com 及其子域上提供Cookie,请使用.example.com,然后执行< em> not 如果您只想在当前域上使用它,请指定域。