2010-03-17 105 views

Trả lời

11

setcookie()xác định cookie sẽ được gửi cùng với phần còn lại của tiêu đề HTTP. Đó là một điều hoàn toàn khác với những gì session_start() thực hiện, ví dụ: tạo phiên hoặc tiếp tục phiên hiện tại dựa trên số nhận dạng phiên được chuyển qua yêu cầu GET hoặc POST hoặc được chuyển qua cookie.

Đầu tiên chỉ cần thêm một cái gì đó để header và gửi nó - trình duyệt, trong khi người kia đi lấy Session ID từ $ _COOKIEs hoặc _GET $ hoặc $ _POST và sau đó cố gắng tìm kiếm các tập tin phiên trong session_save_path và khi tìm thấy unserializing các giá trị của nó vào $ _SESSION và nếu không, tạo một phiên mới, có thể sử dụng setcookie trong quá trình để đặt Id phiên.

Xem chapter on Sessions in the PHP Manual.


Sửa Giống như @Felix một cách chính xác chỉ ra dưới đây, phiên không nhất thiết phải được lưu trong một tập tin. Mặc dù vậy, điều này không quan trọng, bởi vì đối số vẫn giữ nguyên: session_start sẽ tìm và (lại) khởi tạo dữ liệu phiên của bạn, trong khi setcookie chỉ cần thực hiện ý nghĩa của tên.

+0

Tôi đã nhận được nó. Cảm ơn các câu trả lời có chất lượng. – Young

1

Để được giải thích, hãy xem câu trả lời trước tôi. Nếu bạn không muốn gọi hàm start_session() có một cái nhìn tại thiết lập này trong php.ini: session.auto_start

1

Dữ liệu phiên không nhất thiết được lưu trữ trong một tệp như Gordon nói. Với session_set_save_handler() bạn có thể xác định chương trình phụ trợ của riêng bạn sẽ lưu trữ các giá trị, ví dụ: trong cơ sở dữ liệu.

Tất cả việc truy xuất dữ liệu này được xử lý bằng session_start(). Bằng cách này, bạn có thể dễ dàng thay đổi chương trình phụ trợ mà không cần phá vỡ ứng dụng của mình.

Lưu ý: Đây chỉ là một lý do cho session_start() và một lần nữa nó hoạt động nhiều hơn sau đó chỉ cần đặt cookie.

0

Dữ liệu phiên không nhất thiết được lưu trữ trong một tệp như Gordon nói. Với session_set_save_handler(), bạn có thể xác định đầu cuối của riêng mình để lưu trữ các giá trị, ví dụ: trong cơ sở dữ liệu.

Tất cả việc truy xuất dữ liệu này được xử lý bằng session_start(). Bằng cách này bạn có thể dễ dàng thay đổi bạn kết thúc mà không vi phạm ứng dụng của bạn.

Lưu ý: Đây chỉ là một lý do cho session_start() và một lần nữa nó hoạt động nhiều hơn sau đó chỉ cần đặt cookie.

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