2013-03-21 77 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');