2009-07-22 55 views
5

我需要限制Cookie到我的www子域,這個工作是通過在php.ini文件中添加session.cookie_domain = www.example.com這一行。但是,我的服務器上有許多虛擬主機,因此我需要爲每個虛擬主機配置不同的域。經過一番網絡搜索之後,我嘗試過使用:PHP/Apache如何從外部設置session.cookie_domain php.ini

'SetEnv session.cookie_domain www.example.com' - in my httpd.conf 
'php_flag session.cookie_domain www.example.com' in .htaccess 

但是,兩者似乎都阻止了cookie一起工作!

任何幫助非常感謝!

斯圖

回答

2

實現這個的最簡單的方法是使用session_set_cookie_params()代替經由.htaccess設置它的(如果PHP用作模塊的.htaccess方法僅適用)。您可以通過以下方式來使用它:

session_set_cookie_params(0, '/', 'www.example.com'); 
session_start(); 
1

另一種選擇是使用ini_set

ini_set("session.cookie_domain", "www.example.com");

0

在我的情況給我這個工作:

setcookie("name", $Value4Name, time()+$3600 , "/", ".domain.com"); 

但這是爲了記錄域的根的cookie。

歡呼 PC

3

的問題是,php_flag實際上意味着只爲布爾值。因此,在使用php_flag命令時,實際上您將cookie_domain設置爲0,這就是停止工作的原因。

對於文本值,您需要在.htaccess或apache配置中使用php_value。還引述值推薦:

php_value session.cookie_domain ".domain.com" 

見:http://www.php.net/manual/en/configuration.changes.php

0

這個代碼100%的工作,設置此代碼文件的.htaccess

php_value session.cookie_path "/" 
php_value session.cookie_domain ".localhost" 

或代碼文件的JavaScript

function my_cookie($name, $value, $expires = 0) { 
    return setcookie($name, $value, $expires, '/', 'example.com', ...); 
}