php读写cookies无效问题解决办法

今天本地调试,有个cookies死活都写不进去,环境如下:

域名:111cn.net

浏览器:chrome34

代码:

 代码如下 复制代码
header("Content-type: text/html; charset=utf-8");
if (isset($_COOKIE['test']))
{
    echo '获取到的cookies是:'.$_COOKIE['test'];
}
elseif (setcookie('test', 'okh', time() + 3600, '/', '.111cn.net'))
{
    echo '设置cookies:test';
}
else
{
    echo '什么都没有';
}

用111cn.net访问,上面这段代码在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.111cn.net进行访问
修改之前的代码为
1
setcookie('test', 'okh', time() + 3600, '/', 'www.111cn.net')
这下正常设置,也正常记录了。
但是存在2个问题:

如何设置不带WWW的域名的cookies呢?比如:111cn.net
设置www.111cn.net虽然能在www.111cn.net下使用,但是却不能在111cn.net下使用,如何设置cookies使其通用呢?
通过求助,得知原因如下:
这个域名特殊。火狐、chrome不认为 www.111cn.net 是 111cn.net 的二级域名:

 代码如下 复制代码

var eTLDService = Components.classes["@mozilla.org/network/effective-tld-service;1"]
                    .getService(Components.interfaces.nsIEffectiveTLDService);
 
eTLDService.getBaseDomain(gBrowser.selectedTab.linkedBrowser.currentURI);
/*
www.111cn.net
*/

111cn.net 在 effective_tld_names.dat 文件中列出来了:

a.org
b.cn

原来是这么一个小问题,困扰了我一天,原本是为了方便,所以将这个域名作为自己本地开发用,结果出现这个情况,只好将111cn.net修改为1a.com

时间: 2024-10-16 01:43:47

php读写cookies无效问题解决办法的相关文章

PHPcmsv9 get标签 sql语句limit无效及num和rows属性无效问题解决办法

PHPcms v9 get标签sql语句limit无效及num和rows属性无效问题至今也已经是一个老问题了,网络上也有一些表面的解决办法,但是逐日者并没有找到从底层,层模板标签解析及模板引擎代码上真正解决此问题的办法和解释.今天在使用get标签sql语句调用数据的时候当然也遇到了此问题,经过研究找到了问题的原因并且整理出本文希望对php爱好者有所帮助. 错误描述:我想从数据表中调取最新的6条数据!  代码如下 复制代码      <dl class="about_text1"&

firefox的margin-top无效问题解决办法

我的解决办法 firefox的margin-top无效的问题我们只要简单的加入display:inline-block;就可以解决了, 下面附一些实例 .box2增加float属性 2.box1与box2之间增加一层"<div style="clear:both;"></div>" (二)子元素设置margin-top作用于父容器  代码如下 复制代码 <div class="box" style="hei

php多用户读写文件冲空问题解决办法

所以一般的方案会是:  代码如下 复制代码 $fp = fopen("/tmp/lock.txt", "w+"); if (flock($fp, LOCK_EX)) {     fwrite($fp, "Write something heren");     flock($fp, LOCK_UN); } else {     echo "Couldn't lock the file !"; } fclose($fp); 但在

php验证session无效问题解决办法

  环境,我用的是apache+php环境了 如我的程序代码如下  代码如下   <input name="username" type="text" class="input" id="username"> <input name="password" type="password" class="input" id="password&

php的flush和ob_flush无效问题解决办法

我的基础环境是nginx1.6.2+php5.3 做一个逐行输出,使用ob_flush时试了N种方法不起作用,比如下面的代码: <?php ob_start(); for(;;) {     echo "<br>.......";     ob_flush();     flush();     sleep(1); } ?> 谷歌了不少的写法都不行,所以问题应该出在了环境配置上而不是使用方法上. 话说还是stackoverflow给力,搜索"php f

Nginx中PHP flush函数无效问题解决办法

在一次调试PHP逐行输出时候,发现ob_flush和flush两个都失效了,通过phpinfo基本能判断php.ini的设置是正常的. 再去看Nginx,发现Nginx中,有如下的设置: fastcgi_buffer_size 128k; fastcgi_buffers 8 128k; 问题基本找到了,Nginx会缓冲PHP输出的信息,当达到128k时才会将缓冲区的数据发送给客户端,那么我们首先需要将这个缓冲区调小,比如: fastcgi_buffer_size 4k; fastcgi_buff

php 验证session无效问题解决办法

环境,我用的是apache+php环境了 如我的程序代码如下  代码如下 复制代码 <input name="username" type="text" class="input" id="username"> <input name="password" type="password" class="input" id="password

IE6下onclick下函数无效问题解决办法

函数代码 function test() {   windows.location.href='http://www.111cn.net '; } 问题代码如下: "javascript:void(0);" onclick="javascript:test();">点击会跳转    正确代码如下: "javascript:void(0);" onclick="javascript:test();return false;"

asp.net session、登录用户、cookie常见问题解决办法

asp教程.net session.登录用户.cookie常见问题解决办法 这里主要讲了关于session缓存,失效,以及cookie无法删除等常用见的问题了. OutPutCache 自定义缓存:session.登录用户.cookie 等 其实这个也是新瓶装旧酒的问题,前段时间,把这个做了,况且效果和性能都还不错,所以记录下,希望能帮助更多的人 虽然 outputcache 很重要,但是这个功能真的不好用,很多时间不能满足需求,比如做一些自定义方面的缓存依赖,如:session.登录用户信息.