• 技术文章 >后端开发 >PHP问题

    php怎么设置cookie作用域?

    青灯夜游青灯夜游2020-07-24 16:46:58原创1062

    在php中,可以使用setcookie()函数来设置cookie的作用域。语法为“setcookie(name,value,expire,path,domain,secure)”,可以通过设置domain参数的值来设置cookie作用域,

    当我们给网站设置cookie时,大家有没有发现在网站的其他域名下也接收到了这些cookie。这些没用的cookie看似不占多少流量,但如果对一个日PV千万的站点来说,那浪费的资源就不是一点点了。因此在设置cookie时,对它的作用域一定要设置准确了。

    我们都知道在PHP中用setcookie 来设置网站的cookie,【相关教程推荐:《PHP教程》】

    该函数的用法如下:

    setcookie(name,value,expire,path,domain,secure)

    1.png

    今天我们就来探讨一下它的第五个参数domain,因为它决定了cookie的作用域。

    现在有如下3个域名,一个顶级域名、一个二级域名和一个三级域名:

    ① zydya.com

    ②blog.zyday.com

    ③one.blog.zyday.com

    domain参数zydya.comblog.zyday.comone.blog.zyday.com
    setcookie('name',1,time()+1)
    setcookie('name',1,time()+1,'/','zyday.com')
    setcookie('name',1,time()
    +1,'/','blog.zyday.com')
    × × ×
    setcookie('name',1,time()
    +1,'/','one.blog.zyday.com')
    ×××

    当domain设置为空时,domain默认为当前域名,并且该域名下的子域名都可以接收到cookie。

    但是domain参数设置其子域名时,所有域名就接收不到了,包括那个子域名。

    domain参数zydya.comblog.zyday.comone.blog.zyday.com
    setcookie('name',1,time()
    +1)
    ×
    setcookie('name',1,time()+1,'/','zyday.com')
    setcookie('name',1,time()+1,'/','blog.zyday.com')×
    setcookie('name',1,time()+1,'/',one.blog.zyday.com')×××

    看第二行,domain参数是zyday.com,是blog.zyday.com的父域名,那么zyday.com下所有子域名(包括zyday.com、blog.zyday.com、one.blog.zyday.com)都能接收到cookie。

    当domain为自身域名时,那么其父域名不受影响,其本身与其子域名可以接收到cookie。
    而设置其子域名或其他域名时,所有域名都接收不到cookie了。

    domain参数zydya.comblog.zyday.comone.blog.zyday.com
    setcookie('name',1,time()
    +1)
    ××
    setcookie('name',1,time()+1,'/','zyday.com')
    setcookie('name',1,time()+1,'/','blog.zyday.com')×
    setcookie('name',1,time()+1,'/',one.blog.zyday.com')××

    第三个测试得出的结论在上面已经总结了。再看一遍,这里就不多解释了。

    domain的设置,有两点要注意:

    1.在setcookie中省略domain参数,那么domain默认为当前域名。

    2.domain参数可以设置父域名以及自身,但不能设置其它域名,包括子域名,否则cookie不起作用。

    那么cookie的作用域:

    cookie的作用域是domain本身以及domain下的所有子域名。

    推荐学习:PHP编程从入门到精通

    以上就是php怎么设置cookie作用域?的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php cookie作用域
    上一篇:php中mysql模糊查询语句问题? 下一篇:php中foreach()怎么用
    线上培训班

    相关文章推荐

    • PHP服务器搭建教程• PHP实现简单验证码识别,非常详细!• PHP类的构造方法是什么?• php工作流程问题

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网