1

因此,我设置了一个登录/会话系统,该系统在很长一段时间内都能完美运行。但是,在过去的几天内,会话无法传送到子域。

我一直在 session_start 调用上方使用以下内容:

session_set_cookie_params(0, '/', '.domain.com');

同样,这工作得很好。您可以在基本域登录,然后移动到子域并继续会话。或者你可以在一个子域登录并转移到其他人。例子:

  • 在 domain.com 登录有效
  • 移至 subdomain.domain.com 不
  • 移至 domain.com/subdomain 作品

此脚本完全没有任何更改。它只是失败了。也许是主人负责?

编辑: 即使您在子域上登录,PHP 会话也会创建但不起作用。没有 $_SESSION 数组数据有效,等等,尽管您可以在浏览器的 cookie 中看到 PHP 会话。

4

2 回答 2

1

解决它。似乎我在 PHP.ini 中的 session.save_path 设置为 /tmp ,无论出于何种原因,它都不允许我的子域工作或访问会话文件。

我将 PHP.ini 更改为 html 层次结构中的一个新文件夹,并且它起作用了。

仍在使用 session_set_cookie_params(0, '/', '.domain.com'); 以及我之前的所有设置。所以我的代码很好,不知何故保存路径停止工作。很奇怪。

于 2012-11-17T03:25:28.403 回答
0

尝试使用ini_set()函数,例如:

ini_set('session.cookie_domain',
substr($_SERVER['SERVER_NAME'], strpos($_SERVER['SERVER_NAME'],"."),100) );

或尝试使用.htaccess

php_value session.cookie_domain .domain.com

或尝试将安全参数设置为 false ,例如

session_set_cookie_params(0, '/', '.domain.com', false, false);
于 2012-11-16T03:08:08.327 回答