PHP: Tại sao cần sử dụng cookie khi đã tạo session

Em đang học khóa lập trình PHP cơ bản được vài tuần và đang lập trình tính năng để giúp login và logout user. Ở đây em thấy tác giả sử dụng hàm session_start để tạo session cho user nếu user đăng nhập thành công để sau đó nếu truy cập vào trang khác thì sẽ sử dụng đoạn code kiểm tra session của user nếu có thì sẽ không phải đăng nhập lại. Đoạn này thì em hiểu không có vấn đề gì.

Nhưng sau đó tác giả có giải thích thêm ở trình duyệt của user cookie cũng sẽ được tạo ra để lưu thông tin liên quan tới user. Theo em được biết thì cookie được dùng ở client còn session dùng trên server. Do cookie có thể bị thay đổi dễ dàng nên chúng ta cần sử dụng session để đảm bảo bảo mật cho chương trình.

Nhưng nếu như vậy sau khi đã dùng session rồi thì em không hiểu tại sao lại phải tạo cookie nữa? Ai biết có thể giải thích giúp em về vấn đề này được không.

Hói 2 tháng trước

Cookie có thể hoạt động mà không cần session. Ngược lại, nếu không có cookie thì session không thể hoạt động được.

Theo em được biết thì cookie được dùng ở client còn session dùng trên server. Do cookie có thể bị thay đổi dễ dàng nên chúng ta cần sử dụng session để đảm bảo bảo mật cho chương trình.

Cách hiểu của bạn hoàn toàn đúng, dữ liệu trong cookies được sử dụng ở phía client.

Giao thức giao tiếp HTTP giữa client và server là giao thức HTTP. Giao thức này là một giao thức stateless. Điều này có nghĩa là phiên giao dịch giữa client và server sẽ chấm dứt sau mỗi request, không có mối liên hệ nào được tạo ra cho các request tiếp theo với request trước đó (server sẽ không biết chúng đến từ cùng một client hay từ các client khác nhau).

Tuy nhiên trong trường hợp login thì web server cần phải lưu trữ được thông tin của client để có thể phân biệt được danh tính của client gửi request tới. Do đặc điểm của giao thức HTTP như trên, cookie đã được sử dụng để giải quyết vấn đề này.

Khi bạn truy cập website, một session sẽ được tạo trên server (nếu sử dụng PHP hàm này sẽ là start_session()) đồng thời một cookie trên client cũng được tạo ra ứng với session trên server. Nếu không có cookie này thì chỉ với session không sẽ không xác định được danh tính của client gửi request (bạn nhớ lại rằng giao thức HTTP là stateless). Ở các request tiếp theo client sẽ gửi kèm dữ liệu được lưu trong cookie lên server (cùng các dữ liệu khác nếu có). Dữ liệu này thường là một chuỗi các ký tự ngẫu nhiên dùng để phân biệt giữa các client với nhau. Khi nhận được request server sẽ thực hiện việc so sánh dữ liệu cookie của client trong request và kiểm tra trong session để tìm dữ liệu đã được lưu cho client này trước đó (nếu có).

Trả lời 2 ngày trước

Viết Trả Lời: