Hướng dẫn sử dụng Session và Cookie trong PHP

Hướng dẫn sử dụng Session và Cookie trong PHP

Trong thực tế, khi bạn sử dụng các ứng dụng web trực tuyến như Gmail, Yahoo, Facebook, … yêu cầu phải đăng nhập vào thông qua tài khoản và mật khẩu để xác thực được định danh người sử dụng, sau đó ứng dụng sẽ cấp phép các quyền khác nhau để sử dụng thì đây được gọi là một phiên làm việc. Phiên làm việc này có tính duy nhất cho mỗi người sử dụng khác nhau tại một thời điểm cụ thể, thì trong lập trình PHP Session và Cookie sẽ giúp bạn làm được những điều như vậy.

Hướng dẫn sử dụng Session và Cookie trong PHP

Hướng dẫn sử dụng Session và Cookie trong PHP

Cụ thể hơn ở đây, sau khi bạn tiến hành đăng nhập hệ thống sẽ lưu lại userId, userName, họ tên, ngày sinh, … để bạn có thể cấp phép các quyền cho phiên người sử dụng. Ví dụ: Chỉ khi nào đăng nhập vào mới có quyền thêm/sửa/xóa sản phẩm.

Lưu ý: Phiên làm việc của bạn chỉ có giá trị đối với trình duyệt trên thiết bị bạn đang sử dụng.

1. Sử dụng Cookie

Cookie được lưu trữ trên thiết bị của người dùng thông qua trình duyệt. Giá trị của nó có thể bị hacker thay đổi vì vậy tính bảo mật tương đối thấp, thông tin người dùng dễ dàng bị tìm thấy.

– Cú pháp để tạo một cookie

– Cú pháp để lấy giá trị của một cookie

Ví dụ mẫu về ghi và đọc cookie

  – Tạo một tập tin là: setCookie.php bao gồm nội dung code như sau:

 – Tạo một tập tin là: viewCookie.php bao gồm nội dung code như sau:

Để hủy được cookie bạn chỉ cần sử dụng hàm: setcookie cho tên cookie muốn hủy, riêng thời gian tồn tại thì thay bằng: time() – 3600 cũng có thể hiểu là cookie đã hết giá trị từ 60 phút trước.

Một số lưu ý khi sử dụng Cookie

  • Cookie hạn chế lưu thông tin và yêu cầu xử lý thông tin trên server mà thực hiện ở client vì vậy giúp server giảm tải một cách đáng kể
  • Không nên lưu trữ những thông tin quan trọng, hãy cố gắng mã hóa trước khi lưu trữ.

2. Sử dụng Session

Session được lưu trữ hoàn toàn trên server, do vậy tính bảo mật cao. Các website hiện nay thường sử dụng session để lưu thông tin đăng nhập của người dùng.

Để sử dụng được session bạn cần gọi hàm: session_start(); ở đầu mỗi tập tin có thực hiện các thao tác ghi và đọc session. Nếu gặp lỗi headers already sent thì các bạn khắc phục theo hướng dẫn khắc phục lỗi headers already sent.

– Cú pháp tạo một session name:

 – Cú pháp đọc một session name:

– Cú pháp hủy một session name:

 – Cú pháp hủy tất cả session

 Ví dụ mẫu về ghi và đọc session

– Tạo một tập tin: setSession.php có nội dung mã nguồn như sau:

 <?php

 – Tạo một tập tin: getSession.php có nội dung mã nguồn như sau:

Một số lưu ý khi sử dụng session

  • Thời gian tồn tại tối đa của tất cả các session được quy định trong php.ini session.gc_maxlifetime thường được các máy chủ quy định mặc định là: 1200 để sau 20 phút sẽ tự động được xóa bỏ, tiết kiệm không gian lưu trữ cho máy chủ.
  • Lưu lượng dữ liệu truyền tải giữa client và server khi sử dụng session chỉ bao gồm: session_id vì vậy ít thông tin được lưu trữ dưới client. Vì vậy mà tăng cường tính bảo mật và giảm được lưu lượng truyền tải.

Như các bạn có thể thấy cơ chế hoạt động của session vẫn phụ thuộc vào Cookie để hoạt động. Khi chúng ta gọi: session_start(); sẽ có một session id duy nhất được tạo ra ghi xuống Cookie ở trình duyệt để làm nền tảng cho việc xác định tính duy nhất cho phiên làm việc.

Lời kết

Bài viết này, mình đã giới thiệu cho các bạn hiểu về cách sử dụng, các vấn đề khi sử dụng session và cookie trong khi lập trình với ngôn ngữ PHP. Tùy vào trường hợp cụ thể các bạn có thể sử dụng session và cookie theo nhu cầu của mình để giải quyết bài toán một cách tối ưu nhất. Ví dụ như do session có thời gian tồn tại khá thấp vì vậy cần phải sử dụng đến cookie để giải quyết bài toán “Ghi nhớ” trong đăng nhập để mỗi lần truy cập lại ứng dụng web, người dùng sẽ không phải gõ lại tài khoản và mật khẩu khi sử dụng máy tính cá nhân. Đây là những kiến thức qua trải nghiệm thực tế làm việc của mình nên các bạn có thể cùng mình thảo luận qua mục bình luận nhé! 🙂