Tạo bởi Trần Văn Điêp|
Học PHP

BÀI TẬP PHP VỀ COOKIE VÀ SESSION

🧩 Phần 1: Cookie trong PHP

Bài 1: Ghi nhớ tên người dùng

Mức độ: Dễ
Yêu cầu:
Tạo một trang PHP cho phép người dùng nhập tên của mình vào form.
Khi người dùng nhấn Submit, lưu tên này vào Cookie (thời gian sống 1 phút).
Nếu người dùng tải lại trang, hiển thị lời chào:

Xin chào, [Tên của bạn]!

Nếu Cookie hết hạn, hiển thị lại form nhập tên.

Gợi ý:

  • Dùng setcookie('username', $value, time() + 60);

  • Kiểm tra bằng $_COOKIE['username'].


Bài 2: Ghi nhớ lựa chọn giao diện (theme)

Mức độ: Trung bình
Yêu cầu:
Tạo một trang PHP có 2 nút:

  • “Giao diện sáng”

  • “Giao diện tối”

Khi người dùng chọn một giao diện, lưu lựa chọn đó vào Cookie (thời gian sống 7 ngày).
Mỗi khi tải lại trang, trang sẽ hiển thị đúng giao diện người dùng đã chọn.

Gợi ý:

  • Cookie: setcookie('theme', 'dark', time() + 7*24*3600);

  • CSS thay đổi tùy vào giá trị Cookie.


Bài 3: Theo dõi lượt truy cập trang

Mức độ: Trung bình
Yêu cầu:
Viết chương trình hiển thị số lần người dùng đã truy cập trang trong 24 giờ qua.
Dùng Cookie để lưu số lượt truy cập.

Gợi ý:

  • Mỗi khi tải trang, tăng biến $_COOKIE['visit'] lên 1.

  • Nếu chưa tồn tại, khởi tạo bằng 1.

  • Cookie sống 24 giờ.


🔐 Phần 2: Session trong PHP

Bài 4: Đăng nhập đơn giản bằng Session

Mức độ: Trung bình
Yêu cầu:
Tạo form đăng nhập với usernamepassword.

  • Nếu username = admin và password = 123456, đăng nhập thành công.

  • Lưu trạng thái đăng nhập bằng Session.

  • Sau khi đăng nhập, chuyển đến trang welcome.php hiển thị:

    Chào mừng admin đã đăng nhập thành công!

  • Thêm nút Đăng xuất, khi nhấn sẽ hủy session và quay về trang login.

Gợi ý:

  • session_start();

  • Lưu $_SESSION['user'] = 'admin';

  • session_destroy(); để đăng xuất.


Bài 5: Giỏ hàng bằng Session

Mức độ: Khó
Yêu cầu:
Tạo một trang danh sách sản phẩm (ví dụ: áo, giày, mũ, balo) với giá tương ứng.
Mỗi sản phẩm có nút “Thêm vào giỏ hàng”.
Khi người dùng nhấn, sản phẩm được lưu trong Session.
Tạo trang cart.php hiển thị danh sách sản phẩm trong giỏ + tổng tiền.

Tính năng mở rộng (nếu muốn thử thách):

  • Cho phép xóa sản phẩm khỏi giỏ.

  • Cập nhật số lượng từng sản phẩm.

  • Lưu session trong 30 phút.

Gợi ý:

  • $_SESSION['cart'][] = array('name'=>'Áo thun','price'=>100000);

  • Tính tổng bằng vòng lặp.


Bài 6: Tự động đăng nhập bằng Cookie và Session

Mức độ: Khó
Yêu cầu:
Kết hợp Cookie và Session:

  • Khi người dùng đăng nhập, lưu Session $_SESSION['user'].

  • Nếu người dùng tick “Ghi nhớ đăng nhập”, lưu Cookie chứa username (sống 7 ngày).

  • Khi quay lại trang, nếu Session hết hạn nhưng Cookie vẫn còn, tự động đăng nhập lại.

Gợi ý:

  • Kiểm tra Cookie ở đầu trang:

    if(!isset($_SESSION['user']) && isset($_COOKIE['username'])) { $_SESSION['user'] = $_COOKIE['username']; }
  • Cho phép đăng xuất → xóa cả Session và Cookie.


Bài 7: Kiểm soát truy cập bằng Session

Mức độ: Khó
Yêu cầu:
Tạo 3 trang:

  • login.php → Đăng nhập

  • dashboard.php → Trang dành cho người đã đăng nhập

  • logout.php → Đăng xuất

Người dùng chưa đăng nhập mà cố truy cập dashboard.php sẽ bị chuyển về login.php.

Gợi ý:

  • Kiểm tra:

    if(!isset($_SESSION['user'])) { header('Location: login.php'); exit(); }

💡 Phần 3: Ứng dụng tổng hợp – Mini project

Bài 8: Website bán hàng mini có login + giỏ hàng

Mức độ: Nâng cao
Yêu cầu tổng hợp:
Xây dựng ứng dụng PHP mini gồm 3 chức năng:

  1. Đăng nhập / đăng xuất bằng Session

  2. Giỏ hàng lưu bằng Session

  3. Ghi nhớ người dùng bằng Cookie

Cấu trúc gợi ý:

/project ├── index.php ├── login.php ├── logout.php ├── products.php ├── cart.php ├── includes/ │ ├── header.php │ └── footer.php

Tính năng chi tiết:

  • Nếu người dùng đã đăng nhập → hiển thị tên và nút “Đăng xuất”.

  • Nếu chưa đăng nhập → hiển thị nút “Đăng nhập”.

  • Cookie ghi nhớ người dùng trong 7 ngày.

  • Session quản lý giỏ hàng và phiên đăng nhập.


🧭 Lời khuyên & hướng dẫn tự học thêm

  • Dùng var_dump($_COOKIE)var_dump($_SESSION) để xem dữ liệu thật sự được lưu thế nào.

  • Dùng DevTools → Application → Storage để kiểm tra Cookie của trình duyệt.

  • Khi triển khai thực tế, không lưu thông tin nhạy cảm trong Cookie, nên dùng Session ID hoặc token.

  • Khi người dùng đăng xuất, hãy luôn xóa cả Session và Cookie để đảm bảo bảo mật.


✅ Kết luận

Qua loạt bài tập trên, học viên sẽ nắm vững cách vận hành của Cookie và Session trong PHP, biết cách áp dụng vào các tính năng phổ biến như:

  • Ghi nhớ người dùng,

  • Đăng nhập an toàn,

  • Giỏ hàng mua sắm,

  • Quản lý quyền truy cập.

Khi đã hiểu rõ cơ chế này, bạn sẽ dễ dàng mở rộng sang các kỹ thuật nâng cao như JWT, OAuth, hoặc lưu phiên trên Redis trong các dự án thực tế.


👉 Gợi ý thêm:
Sau khi hoàn thành, hãy thử tích hợp Ajax để thêm sản phẩm vào giỏ hàng mà không cần tải lại trang – đây là bước tiếp theo để bạn “thành thạo API – Ajax – Session trong lập trình PHP”.

Phản hồi từ học viên

5

Tổng 0 đánh giá

Đăng nhập để làm bài kiểm tra

Chưa có kết quả nào trước đó