帝国CMS:如何设置cookie子域名共享?

  • 帝国CMS:如何设置cookie子域名共享?已关闭评论
  • 131 次浏览
  • A+
所属分类:帝国建站
腾讯云双十一

今天是接触帝国cms的第三天,涉及到了一个问题,系统目前有一个主站和一个论坛二级站,希望是在主站登录之后再二级站点也能够直接登录,不需要进行二次操作了。这是第一个需求。接下来会完善主站和disscuz论坛之间的登录会话共享问题。

之前在使用ThinkPHP时遇到过这个问题,解决办法挺简单的。可以查看:thinkphp框架session共享问题

这次说一下帝国cms之间的解决方式,目前我们在测试时使用的是local.a.com和local2.a.com这两个网址。要实现local.a.com登录之后local2.a.com网站上也同时登录。减少用户的二次操作。

这里我们说一下cookie的设置。PHP中设置cookie参数使用函数setcookie来操作

参数解读

1、name:Cookie 名称

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

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

Note:你可能注意到了,expire 使用 Unix 时间戳而非 Wdy, DD-Mon-YYYY HH:MM:SS GMT 这样的日期格式,是因为 PHP 内部做了转换。

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

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

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

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

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

返回值

如果在调用本函数以前就产生了输出,setcookie() 会调用失败并返回 FALSE。 如果 setcookie() 成功运行,返回 TRUE。当然,它的意思并非用户是否已接受 Cookie。

帝国cms设置的方法

首先登录帝国cms后台,点击系统设置->安全参数设置,进入参数设置页面。

将网站的根域名填写到COOKIE作用域设定中就可以了。如下图所示:

帝国CMS:如何设置cookie子域名共享?

案例

注意:设置后网站后台登录信息会失效,需要重新登录,并且前台存在缓存时间。并非立即生效。略微等待;

小编赵一八笔记(www.fuwuqidl.com)温馨提示:下单的时候先买服务器再去买域名,首购优惠很大不要错过,赵一八笔记这里有阿里云(阿里云官网代金券2000元礼包),腾讯云(腾讯云官网代金券2860元礼包)最新代金券免费领取,下单可直接抵用金额。

腾讯云热门云产品3折起