Hướng dẫn dùng sessoin trong PHP

Trong hướng dẫn này, bạn sẽ học cách lưu trữ một số dữ liệu nhất định trên máy chủ trên cơ sở tạm thời bằng cách sử dụng Session trong PHP.

Session trong PHP là gì?

Mặc dù bạn có thể lưu trữ dữ liệu bằng cookie nhưng nó có một số vấn đề về bảo mật. Vì cookie được lưu trữ trên máy tính của người dùng nên kẻ tấn công có thể dễ dàng sửa đổi nội dung cookie để chèn dữ liệu có thể gây hại vào ứng dụng của bạn và có thể phá vỡ ứng dụng của bạn.

Ngoài ra, mỗi khi trình duyệt yêu cầu một URL đến máy chủ, tất cả dữ liệu cookie cho một trang web sẽ tự động được gửi đến máy chủ trong yêu cầu. Có nghĩa là nếu bạn đã lưu trữ 5 cookie trên hệ thống của người dùng, mỗi cookie có kích thước 4KB, trình duyệt cần tải lên 20KB dữ liệu mỗi khi người dùng xem một trang, điều này có thể ảnh hưởng đến hiệu suất trang web của bạn.

Bạn có thể giải quyết cả hai vấn đề này bằng cách sử dụng PHP Session. Một PHP Session lưu trữ dữ liệu trên máy chủ chứ không phải máy tính của người dùng. Trong môi trường dựa trên Session, mọi người dùng được xác định thông qua một số duy nhất được gọi là số nhận dạng Session hoặc SID. Session ID duy nhất này được sử dụng để liên kết mỗi người dùng với thông tin của riêng họ trên máy chủ như email, bài đăng, v.v.

Mẹo: Session ID được tạo ngẫu nhiên bởi công cụ PHP, điều này hầu như không thể đoán được. Hơn nữa, bởi vì dữ liệu Session được lưu trữ trên máy chủ, nó không phải được gửi theo mọi yêu cầu của trình duyệt.

Bắt đầu một PHP Session

Trước khi bạn có thể lưu trữ bất kỳ thông tin nào trong các biến Session, trước tiên bạn phải bắt đầu Session. Để bắt đầu một Session mới, chỉ cần gọi hàm session_start() trong PHP . Nó sẽ tạo một Session mới và tạo một Session ID duy nhất cho người dùng.

Mã PHP trong ví dụ dưới đây chỉ đơn giản là bắt đầu một Session mới.

Trước tiên hàm session_start() sẽ kiểm tra xem một Session đã tồn tại hay chưa bằng cách tìm kiếm sự hiện diện của Session ID. Nếu nó tìm thấy một, tức là nếu Session đã được bắt đầu, nó sẽ thiết lập các biến Session và nếu không, nó sẽ bắt đầu một Session mới bằng cách tạo một Session ID mới.

Ghi chú: Bạn phải gọi hàm session_start() ở đầu trang, tức là trước bất kỳ một lệnh nào được tạo bởi tập lệnh của bạn trong trình duyệt, giống như bạn làm trong khi đặt cookie với hàm setcookie().

Lưu trữ và truy cập dữ liệu Session

Bạn có thể lưu trữ tất cả dữ liệu Session của mình dưới dạng các cặp khóa-giá trị trong mảng siêu toàn cầu (superglobal) $_SESSION[]. Dữ liệu được lưu trữ có thể được truy cập trong suốt thời gian tồn tại của một Session. Hãy xem xét tập lệnh sau, tập lệnh này tạo một Session mới và đăng ký hai biến cho Session.

Để truy cập dữ liệu Session mà chúng tôi đã đặt trên ví dụ trước của chúng tôi từ bất kỳ trang nào khác trên cùng một miền web - chỉ cần tạo lại Session bằng cách gọi session_start()và sau đó chuyển khóa tương ứng vào mảng kết hợp

0.

Mã PHP trong ví dụ trên tạo ra kết quả sau.

Ghi chú: Để truy cập dữ liệu Session trong cùng một trang, không cần tạo lại Session vì nó đã được bắt đầu trên đầu trang.

Hủy một Session

Nếu bạn muốn xóa dữ liệu Session nhất định, chỉ cần bỏ đặt khóa tương ứng của mảng kết hợp

0, như được hiển thị trong ví dụ sau:

Tuy nhiên, để hủy hoàn toàn một Session, chỉ cần gọi hàm

2. Hàm này không cần bất kỳ đối số nào và một lệnh gọi sẽ hủy tất cả dữ liệu Session.

Ghi chú: Trước khi hủy một Session bằng hàm

2, trước tiên bạn cần tạo lại môi trường Session nếu nó chưa có ở đó bằng cách sử dụng hàm session_start(), để có thứ gì đó mà hủy.

Mỗi PHP Session đều có một giá trị thời gian chờ - thời lượng, được đo bằng giây - xác định thời gian một Session sẽ tồn tại trong trường hợp không có bất kỳ hoạt động nào của người dùng. Bạn có thể điều chỉnh khoảng thời gian chờ này bằng cách thay đổi giá trị của biến

5 trong tệp cấu hình PHP (
6).

Sessionphp là một công cụ rất mạnh mẽ giúp kết nối các phiên làm việc của người dùng phục vụ cho chức năng đăng nhập hệ thống, giỏ hàng…

Video hướng dẫn Session Php trong 40 phút miễn phí

Phiên làm việc là gì?

Phiên là một chu trình người dùng gửi yêu cầu lên server và được server hồi đáp. Sau khi server hồi đáp trả lại trang nó sẽ đóng kết nối. Vậy nên những phiên làm việc sau đó web server không thể kết nối các phiên làm việc với nhau để phục vụ công việc nào đó.

Ví dụ bên dưới chúng ta tiến hành kiểm tra $a,

  • Nếu $id chưa tồn tại sẽ gán giá trị cho nó là 1 và in nó lên màn hình.
  • Ngược lại, sẽ xuất lên màn hình
    0 (tăng giá trị của $a lên 1 đơn vị và xuất lên màn hình).

Sau khi chạy đoạn code trên nhiều lần thì kết quả vẫn chỉ xuất lên màn hình giá trị

2.

Điều này minh chứng một điều rằng theo mặc định thông thường các dữ liệu trên các phiên làm việc không kết nối với nhau.

Session là gì?

  • Session dùng theo dõi và kết nối giữa các phiên làm việc của người dùng
  • Thông tin của session được lưu trữ trong mảng hệ thống
    3
  • Session dùng để tạo các ứng dụng giỏ hàng, đăng nhập

Cách sử dụng Session

#1. Chuẩn bị

Để sử dụng session bạn cần thêm những hàm bên dưới giúp session khởi động để bắt đầu sử dụng.

#2. Lưu thông tin vào session

3 nó là một mảng toàn cục nên việc lưu thông tin thao tác như mảng thông thường.

$_SESSION[name] = value;

Ví dụ: Lưu id người dùng đã login vào session

Khi người dùng login vào hệ thống chúng ta muốn lưu lại id để phục vụ cho quá trình xử lý chương trình trong phiên làm việc của user bất kỳ. Để làm điều này bạn có thể lưu trữ đơn giản như bên dưới với giá trị

5

$_SESSION['id_login'] = 10;

#3. Cách lấy giá trị đã lưu trong Session

Sau khi lưu dữ liệu vào session tất nhiên chúng ta cần sử dụng nó phục vụ cho một công việc nào đó trong chương trình. Ví dụ như hiển thị tên người dùng đã đăng nhập, hiển thị danh sách sản phẩm đã mua trong giỏ hàng…

3 bản chất nó là mảng nên cách truy suất lấy thông tin bạn thực hiện theo cách thông thường.

Kết quả

10

#4. Cách hủy Session

Để hủy Session chúng ta có thể dùng một trong 2 hàm sau

  • 7: Hủy một phần của Session
  • 8: Hủy toàn bộ sesion trong hệ thống

Ví dụ: Hủy sesion của id login

unset($_SESSION['id_login']);

Tổng kết

Qua bài này bạn cần nhớ Session dùng để lưu dữ liệu trên nhiều phiên làm việc lại với nhau. Dữ liệu được lưu trữ trong biến toàn cục $_SESSION nó cũng là kiểu dữ liệu mảng nên cách thao tác như mảng thông thường.

Đây là một nội dung rất quan trọng trong quá trình xây dựng website có chức năng đăng nhập thành viên hoặc hệ thống web có giỏ hàng, giúp khách hàng có thể đặt hàng trực tiếp trên hệ thống.

Việc của bạn ngay bây giờ cần ghi chép lại những nội dung quan trọng và thực hành lại từng bước những thao tác trên Session để đảm bảo nắm chắc bài học.