2013-03-21 125 views
0

您好,我在访问子域上的会话时遇到了问题。该会议将于domain.com通过使用此代码来设置:按子域访问会话

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

所以加入域中的前一个点或许应该子站点的设置会话均匀。

我有一个看的phpinfo wwhere我发现这条线:因为托管设置我都没有机会修改php.ini文件的

session.cookie_domain no value no value 

。所以我不得不在上面的所有文件中添加ini_set行。

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

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

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

非常感谢。

回答

0

您必须首先启动会话。然后它会工作

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

嗨尝试如下选项:

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');