Ghi mảng vào session PHP

Hãy xem xét đoạn code mà chúng ta đã làm trong bài học trước:

html<?php
  if (!empty($_GET)) {
    $_SESSION['num1'] = $_GET['num1'];
    $_SESSION['num2'] = $_GET['num2'];
  }
?>

Trên thực tế, có thể lấy và ghi tất cả dữ liệu của form ngay lập tức vào $_SESSION:

test1.php<?php
  if (!empty($_GET)) {
    $_SESSION = $_GET;
  }
?>

Và trong file test2.php làm như sau:

test2.php<?php
  if (!empty($_SESSION)) {
    echo array_sum($_SESSION);
  }
?>

Ưu điểm của cách tiếp cận này là mã của chúng ta sẽ hoạt động bất kể số lượng input trong form.

Tuy nhiên, cũng có nhược điểm: khi ghi đè lên $_SESSION, chúng ta xóa tất cả dữ liệu đã có ở đó trước đó. Biết đâu script khác của chúng ta đã ghi gì vào đó? Và chúng ta lại xóa nó đi.

Hãy làm theo cách khác:

test2.php<?php
  if (!empty($_GET)) {
    $_SESSION['nums'] = $_GET;
  }
?>

Như bạn thấy, vào biến session chúng ta đã ghi không phải một giá trị đơn lẻ nào đó, mà là một mảng hoàn chỉnh. Bây giờ trong file test2.php chúng ta có thể tìm tổng của các phần tử trong mảng này:

test2.php<?php
  if (!empty($_SESSION)) {
    echo array_sum($_SESSION['nums']);
  }
?>
Задание 1

Trên một trang, sử dụng form để hỏi người dùng tên, tuổi, lương và thêm một vài thứ khác. Hãy ghi những dữ liệu này vào một biến session dưới dạng mảng. Khi truy cập vào trang khác, hãy duyệt qua dữ liệu đã lưu bằng vòng lặp và hiển thị từng phần tử của mảng trong thẻ li của thẻ ul.