php - 我设置cookies成功了,再次刷新页面后,设置的cookies没有了
大家讲道理
大家讲道理 2017-04-10 14:46:15
0
3
477

代码如下:

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

用us.com访问,上面这段代码在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.

于是我做了这么一个调整:

  1. 用www.us.com进行访问
  2. 修改之前的代码为

    setcookie('test', 'okh', time() + 3600, '/', 'www.us.com')

这下正常设置,也正常记录了。

但是存在2个问题:

  1. 请问如何设置不带WWW的域名的cookies呢?比如:us.com
  2. 设置www.us.com虽然能在www.us.com下使用,但是却不能在us.com下使用,如何设置cookies使其通用呢?

PS:我知道去掉domian这个参数就可以成功设置了,不过我的需求是设置不同域下的cookies,不仅仅是一个域名下,所以我还是希望保留这个参数的,最好是能设置诸如:.us.com

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全員に返信(3)
迷茫

这个域名特殊。火狐不认为 www.us.comus.com 的二级域名:

var eTLDService = Components.classes["@mozilla.org/network/effective-tld-service;1"]
                    .getService(Components.interfaces.nsIEffectiveTLDService);

eTLDService.getBaseDomain(gBrowser.selectedTab.linkedBrowser.currentURI);
/*
www.us.com
*/

us.com 在 effective_tld_names.dat 文件中列出来了:

// CentralNic : http://www.centralnic.com/names/domains
// Requested by registry <gavin.brown@centralnic.com> 2012-09-27
ae.org
ar.com
br.com
cn.com
com.de
de.com
eu.com
gb.com
gb.net
gr.com
hu.com
hu.net
jp.net
jpn.com
kr.com
no.com
qc.com
ru.com
sa.com
se.com
se.net
uk.com
uk.net
us.com
us.org
uy.com
za.com
いいねを押す +0
Ty80

如果是在当前域名下设置 cookie,不需要把 domain 写出来,直接这样设置:

setcookie('test', 'okh', time() + 3600)

依云大大是对的,是因为域名的特殊性,当你改为一个一般的域名:abc.com 是可以的。

setcookie('test', 'okh', time() + 3600, '/', '.abc.com')

いいねを押す +0
Ty80

本地的不正常的,很正常

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート