对于cookies读写操作我们如果域名配置没配置好那么可能只有一个域名要使用,像www.jquerycn.cn与jquerycn.cn后者是包括前者的哦,下面来给大家举个例子。
今天本地调试,有个cookies死活都写不进去,环境如下:
域名:jquerycn.cn
浏览器:chrome34
代码:
代码如下 | 复制代码 | ||||
header("Content-type: text/html; charset=utf-8"); if (isset($_COOKIE['test'])) { echo '获取到的cookies是:'.$_COOKIE['test']; } elseif (setcookie('test', 'okh', time() 3600, '/', '.jquerycn.cn')) { echo '设置cookies:test'; } else { echo '什么都没有'; } 用jquerycn.cn访问,上面这段代码在chrome下一直设置成功,但是却一直都没记录。找了半天原因,一朋友从手册上告诉我: The domain that the cookie is available to. Setting the domain to ‘www.example.com’ will make the cookie available in the www subdomain and higher subdomains. Cookies available to a lower domain, such as ‘example.com’ will be available to higher subdomains, such as ‘www.example.com’. Older browsers still implementing the deprecated » RFC 2109 may require a leading . to match all subdomains. 于是我做了这么一个调整: 用www.jquerycn.cn进行访问 修改之前的代码为 1 setcookie('test', 'okh', time() 3600, '/', 'www.jquerycn.cn') 这下正常设置,也正常记录了。 但是存在2个问题: 如何设置不带WWW的域名的cookies呢?比如:jquerycn.cn 设置www.jquerycn.cn虽然能在www.jquerycn.cn下使用,但是却不能在jquerycn.cn下使用,如何设置cookies使其通用呢? 通过求助,得知原因如下: 这个域名特殊。火狐、chrome不认为 www.jquerycn.cn 是 jquerycn.cn 的二级域名:
|