2012-03-13 40 views
8

Trên một trang tôi có một cái gì đó như thế nàyPHP setcookie() không làm việc

setcookie('user', 'value' ,6000, '/', 'mydomain.co.uk'); 

Trên trang tiếp theo tôi có

var_dump($_COOKIE); 

tôi có thể thấy tất cả những người tự động tạo ra, giống như PHPSESSID nhưng tôi không thể thấy user.

Nếu tôi làm echo setcookie('user', 'value' ,6000, '/', 'mydomain.co.uk');, nó trả về true. Vì vậy, tôi không chắc tại sao tôi không thể nhìn thấy nó.

Tôi đã thử rất nhiều ý tưởng khác nhau, nhưng không có gì có hiệu quả. Ngoài ra, tôi đã sử dụng .htaccess để chuyển hướng tất cả các yêu cầu qua một trang index.php không chắc chắn nếu điều này là làm bất cứ điều gì.

+0

Bạn có thể tìm thấy ['Cookie mới ($ name)'] (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L51) hữu ích, như được tìm thấy trong [thư viện độc lập] (https://github.com/delight-im/PHP-Cookie). – caw

Trả lời

17

Hãy thử điều này:

setcookie('user', 'value' ,time() + 6000, '/', 'mydomain.co.uk'); 

Các hết hạn Parameter cần phải là một dấu thời gian. 6000 là dấu thời gian trong quá khứ và do đó xóa cookie.

+0

Ah ha yes! Tuyệt vời, cảm ơn bạn! – Alex

+1

Nhập lưu ý: tham số hết hạn có thể được đặt thành 0 về cơ bản làm cho cookie hết hạn vào cuối phiên. http://php.net/manual/en/function.setcookie.php – diggersworld

1

Làm thế nào về:

setcookie('user', 'value' ,6000, '/', '.mydomain.co.uk'); 

Kiểm tra các tập tin cookie của trình duyệt. Một số trình duyệt (firefox và chrome) có phần bổ trợ cho phép bạn xem cookie khi chúng xuất hiện để bạn có thể gỡ lỗi.

EDIT: Vấn đề là 6000. Điều đó là sai. sử dụng này: time() + 6000

+0

Vâng tôi đã sử dụng một tiện ích bổ sung của Chrome nhưng đã sử dụng để var_dumping $ _COOKIE khi nó không xuất hiện trong đó. Tôi đã thử sử dụng '.mydomain.co.uk' nhưng nó vẫn không hoạt động: ( – Alex

+0

Ah yes, thanks! – Alex

Các vấn đề liên quan