同一域名下部署同一个项目,最大容易出现的问题就是 session 和 cookie 重名,而 HoorayOS 只需要修改几个简单的配置就能实现多个 HoorayOS 共存,互不冲突。

先来描述下如果不做处理,一个域名下部署了两个或者多个 HoorayOS 会出现哪些情况:

  1. 在 http://www.xxx.com/A 登入后,再打开 http://www.xxx.com/B 直接提示登入成功了,或者报错了。(注:两套 HoorayOS 使用的都是各自数据库)
  2. 在 http://www.xxx.com/A 登出后,刷新 http://www.xxx.com/B ,原先登入状态的也跟着登出了。
  3. 等等……

以上说的其实就是 session 重名而出现的问题,此外 cookie 也会出现类似的问题。那要如何配置才能实现共存?下面就将解答。

(以下用 A , B 代表同一域名下的两个 HoorayOS 程序做讲解)

首先,打开 B 下的「HoorayOS / inc / config.php」文件,找到如下代码

$_CONFIG = array(
	'authkey' => 'hoorayos',
	'COOKIE_PREFIX' => '',
	'COOKIE_EXPIRE' => 0,
	'COOKIE_PATH' => '/',
	'COOKIE_DOMAIN' => '',
	'SESSION_PREFIX' => 'HoorayOS'
);

需要关注的字段是:

修改后的 B 配置如下(参考)

$_CONFIG = array(
	'authkey' => 'hoorayos2',
	'COOKIE_PREFIX' => 'hoorayos2_',
	'COOKIE_EXPIRE' => 0,
	'COOKIE_PATH' => '/',
	'COOKIE_DOMAIN' => '',
	'SESSION_PREFIX' => 'HoorayOS2'
);

配置好后 A B 已经能独立登入、登出操作了,互不干扰。

如果进行二次开发需要使用 session 或 cookie,建议使用 HoorayOS 提供的 session() 和 cookie(),这两个函数均提取自 ThinkPHP,使用方法可打开「HoorayOS / inc / functions.php」进行查阅。

留言