2009-07-22 32 views
5

Tôi cần giới hạn cookie cho tên miền phụ www của tôi, điều này làm việc bằng cách thêm dòng session.cookie_domain = www.example.com vào tệp php.ini. Tuy nhiên tôi có một số máy chủ ảo trên máy chủ của tôi vì vậy tôi cần tên miền này khác nhau cho mỗi máy chủ. Sau một chút tìm kiếm trên web, tôi đã thử sử dụng:PHP/Apache cách đặt session.cookie_domain từ bên ngoài php.ini

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

Tuy nhiên cả hai dường như ngừng cookie hoạt động cùng nhau!

Bất kỳ trợ giúp nào được đánh giá cao!

Stu

Trả lời

2

Cách dễ nhất để đạt được điều này là sử dụng session_set_cookie_params() thay vì thiết lập nó qua .htaccess (phương pháp .htaccess chỉ hoạt động nếu PHP được sử dụng như một mô-đun). Bạn có thể sử dụng nó theo cách sau:

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

Một lựa chọn khác là sử dụng ini_set:

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

0

Trong trường hợp của tôi một này làm việc cho tôi:

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

Nhưng điều này là để bạn ghi lại một cookie cho thư mục gốc của miền.

cổ vũ PC

3

Vấn đề là php_flag là thực sự có nghĩa là chỉ cho các giá trị Boolean. Vì vậy, khi sử dụng lệnh php_flag, bạn đang thực sự đặt cookie_domain thành 0, đó là lý do tại sao nó ngừng hoạt động.

Đối với giá trị văn bản, bạn cần sử dụng php_value trong cấu hình .htaccess hoặc apache. Cũng trích dẫn các giá trị được đề nghị:

php_value session.cookie_domain ".domain.com" 

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

0

Mã này 100% công việc, thiết lập mã này trong tập tin .htaccess

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

Hoặc mã cho tập tin JavaScript

function my_cookie($name, $value, $expires = 0) { 
    return setcookie($name, $value, $expires, '/', 'example.com', ...); 
} 
Các vấn đề liên quan