我的朋友和我正在使用PHP和MySQL创建基于cookie的登录系统,当用户登录时,会保存存储其登录信息的cookie。问题是,对于每个网址http://thewebsite.com和http://www.thewebsite.com,都会存储单独的Cookie。
是否有解决方案可以让我们为多个网址保存相同的Cookie,或者我们是否必须每次都将用户重定向到http://www.thewebsite.com。
如果是这样,检查URL中是否存在“www”并重新定向的简单方法是什么?
答案 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 如果您只想在当前域上使用它,请指定域。