2009-07-22 6 views
5

Ho bisogno di limitare i cookie al mio sottodominio www, questo funziona da me aggiungendo la riga session.cookie_domain = www.example.com nel file php.ini. Tuttavia ho un numero di host virtuali sul mio server, quindi ho bisogno che questo dominio sia diverso per ognuno. Dopo un po 'di web-seach, ho provato a utilizzare:PHP/Apache come impostare session.cookie_domain da php.ini esterno

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

Tuttavia entrambi sembrano bloccare i cookie lavorando tutti insieme!

Qualsiasi aiuto molto apprezzato!

Stu

risposta

2

Il modo più semplice per ottenere questo è quello di utilizzare session_set_cookie_params() invece di impostare tramite .htaccess (il metodo .htaccess funziona solo se PHP viene utilizzato come modulo). Si può usare nel modo seguente:

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

Un'altra opzione è quella di utilizzare ini_set:

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

0

Nel mio caso questo ha funzionato per me:

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

Ma questo è per te registrare un cookie per la root del dominio.

applausi PC

3

Il problema è che php_flag è in realtà serve solo per valori booleani. Quindi, quando si utilizza il comando php_flag, si sta effettivamente impostando cookie_domain su 0, motivo per cui smette di funzionare.

Per i valori di testo, è necessario utilizzare php_value nella configurazione .htaccess o apache. Anche citando il valore si raccomanda:

php_value session.cookie_domain ".domain.com" 

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

0

Questo codice lavoro di 100%, impostare questo codice nel file .htaccess

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

o il codice per il file JavaScript

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