0

我正在为我的表达式引擎项目使用会话。我使用以下方法在页面顶部设置会话。

    if (session_id() == ''){
         session_start(); 
    } or

   if(!isset($_SESSION)){
        session_start();
    }

      or

   if(empty($_SESSION['userid'])){
      session_start(); 
   } 

我编写了自定义表达式引擎插件,在其中进行会话检查。

过了一段时间,我观察到了一个奇怪的会话行为。对于不同的 url,它的设置不同。对于 http:// url 它设置不同,对于 www:// url 它设置不同。如何设置和检索会话以使http://example.com和 www.example.com 产生相同的结果。

我也遵循了这个网址的步骤http://ellislab.com/forums/viewthread/231468/。我在http://ellislab.com/forums/viewthread/232604/上发布了同样的问题。但它对我没有帮助。

有人可以帮我解决这个问题。

4

2 回答 2

2

一个小提示:www 是一个子域,而不是一个协议。所以它是 www.example.com,而不是 www://example.com

话虽这么说:问题是会话cookie(我猜您正在使用会话cookie)在不同的子域上无法识别,因此您需要使其在整个域上可用

您可以查看此 php 函数以获取更多详细信息:http: //php.net/session_set_cookie_params

于 2013-01-15T14:18:18.090 回答
0

谢谢@mishu。在您解释 www 是一个子域和 session_cookie 问题后,我做了一些实验,然后用谷歌搜索了一下。

这篇关于 stackoverflow 的帖子非常有帮助。 跨子域的 PHP 会话

我在 expressionengine / codeigniter 的根文件夹中打开了 index.php 文件,然后添加了以下行

ini_set('session.cookie_domain','.example.com');

现在它工作正常。如果有人可以在这个线程上简要解释一下,它将对其他开发人员很有用。

于 2013-01-15T15:05:13.243 回答