本文作者:心月

PHP实现主域名和子域名之间cookie共享

心月IT博客 2019-11-09
PHP实现主域名和子域名之间cookie共享摘要:PHP实现主域名和子域名之间cookie共享,即在子域名下可以读取主域名中设置的cookie数据,或者在一个子域名中可以读取另一个子域名设置的cookie数据。

        PHP实现主域名和子域名之间 cookie共享,即在子域名下可以读取主域名中设置的cookie数据,或者在一个子域名中可以读取另一个子域名设置的 cookie数据。

        通常我们设置的cookie数据只在当前域名下有效,那如何才能实现在域名和子域名之间cookie共享呢?其实很简单,只需利用 setcookie 函数就可以实现。

先来看看 php 官方手册中对 setcookie 函数的介绍:

使用方法:

setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool$secure = false [, bool $httponly = false ]]]]]] ) : bool

官方手册参数说明:

name

Cookie 名称。

value

Cookie 值。 这个值储存于用户的电脑里,请勿储存敏感信息。 比如 name 是 'cookiename', 可通过 $_COOKIE['cookiename'] 获取它的值。

expire

Cookie 的过期时间。 这是个 Unix 时间戳,即 Unix 纪元以来(格林威治时间 1970 年 1 月 1 日 00:00:00)的秒数。 也就是说,基本可以用 time() 函数的结果加上希望过期的秒数。 或者也可以用 mktime()。 time()+60*60*24*30 就是设置 Cookie 30 天后过期。 如果设置成零,或者忽略参数, Cookie 会在会话结束时过期(也就是关掉浏览器时)。

path

Cookie 有效的服务器路径。 设置成 '/' 时,Cookie 对整个域名 domain 有效。 如果设置成 '/foo/', Cookie 仅仅对 domain 中 /foo/ 目录及其子目录有效(比如 /foo/bar/)。 默认值是设置 Cookie 时的当前目录。

domain

Cookie 的有效域名/子域名。 设置成子域名(例如 'www.example.com'),会使 Cookie 对这个子域名和它的三级域名有效(例如 w2.www.example.com)。 要让 Cookie 对整个域名有效(包括它的全部子域名),只要设置成域名就可以了(这个例子里是 'example.com')。

旧版浏览器仍然在使用废弃的 » RFC 2109, 需要一个前置的点 . 来匹配所有子域名。

secure

设置这个 Cookie 是否仅仅通过安全的 HTTPS 连接传给客户端。 设置成 TRUE 时,只有安全连接存在时才会设置 Cookie。 如果是在服务器端处理这个需求,程序员需要仅仅在安全连接上发送此类 Cookie (通过 $_SERVER["HTTPS"] 判断)。

httponly

设置成 TRUE,Cookie 仅可通过 HTTP 协议访问。 这意思就是 Cookie 无法通过类似 JavaScript 这样的脚本语言访问。 要有效减少 XSS 攻击时的身份窃取行为,可建议用此设置(虽然不是所有浏览器都支持),不过这个说法经常有争议。 PHP 5.2.0 中添加。 TRUE 或 FALSE

在setcookie()函数的domain参数可以设置cookie的有效域名,所以要实现两个域名之间cookie共享,可以利用这个参数来实现。

实现步骤

1、准备1个主域名和2个子域名

主域名:www.b.com (在主域名中设置共享cookie数据)

子域名1:test.b.com    (读取主域名设置的共享cookie数据)


2、准备2个php文件

 index.php //主域名 www.b.com 下的php文件

<?php
 header("content-type:text/html;charset=utf-8");
 setcookie('username','username-main',time()+3600,'/','.b.com');
 setcookie('age','24-main',time()+3600,'/','.b.com');
 setcookie('sex','man',time()+3600);
 var_dump($_COOKIE);

index1.php //子域名 test1.b.com 下的php文件

<?php
    var_dump($_COOKIE);

运行结果如果所示:

cookie数据共享完美实现。

PHP实现主域名和子域名之间cookie共享

文章版权及转载声明:

本文由 心月IT技术博客 博主整理于 2019-11-09
若转载请注明原文及出处:https://www.xinyueseo.com/other/485.html

分享到:
赞(
发表评论
快捷输入:

验证码

    评论列表 (有 1 条评论,人围观)参与讨论
    网友昵称:ly000
    ly000游客2020-08-28回复
    大神能不能帮忙 实现一下??