【问题标题】:access session by subdomains按子域访问会话
【发布时间】:2013-03-21 07:13:21
【问题描述】:

您好,我在访问子域上的会话时遇到问题。会话将使用以下代码在 domain.com 上设置:

<?php
ob_start();
ini_set("session.cookie_domain",".domain.com");
session_start();
header ("Content-Type: text/html; charset=utf-8");
....

所以在域前面添加一个点可能应该为子域设置会话。

我查看了我发现这一行的 phpinfo:

session.cookie_domain   no value    no value

由于主机设置,我没有机会编辑 php.ini 文件。所以我不得不在上面的所有文件上添加 ini_set 行。

问题如下:当我调用 domain.com 时,将设置会话。我建立了一个测试页,可以轻松地回显会话和 cookie。正如我所说,会话将在 domain.com 上设置,当我调用 domain.com/testfile.php 时,它将正确显示。但是当我调用 www.domain.com/testfile.php 时,只会显示 cookie 而不会显示会话,即为空。在 testfile.php 中还添加了 ini_set 行。

所以我不知道为什么这不起作用?我还多次删除了缓存和浏览器历史记录,但没有改变任何东西。我也尝试了不同的浏览器。

如果有人可以给我提示,我真的很感激。

非常感谢。

【问题讨论】:

    标签: php html session subdomain


    【解决方案1】:

    您必须先开始会话。然后它会工作

    <?php
    session_start();
    ob_start();
    ini_set("session.cookie_domain",".domain.com");
    header ("Content-Type: text/html; charset=utf-8");
    ....
    

    【讨论】:

      【解决方案2】:

      您好,请尝试以下选项:

      session.cookie_domain = ".example.com"
      

      在您的 .htaccess 中:

      php_value session.cookie_domain .example.com
      

      作为脚本中的第一件事:

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

      或

      session_set_cookie_params(0, '/', 'example.com', false, false);
      

      或者

       if(isset($_COOKIE['session_id']))
                  session_id($_COOKIE['session_id']);
              Zend_Session::start(); //or session_start();
              if(!isset($_COOKIE['session_id']))
                  setcookie('session_id', session_id(), 0, '/', '.yourdomain.com');
      

      【讨论】:

        猜你喜欢
        • 2013-10-11
        • 1970-01-01
        • 2012-02-07
        • 2010-10-30
        • 1970-01-01
        • 2015-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多