Bài 25: Session và cookie trong php

Bài 25: Session và cookie trong php

Session và Cookie dùng để lưu trữ dữ liệu tạm thời và từ đó hệ thống có thể đưa ra những quyết định về quyền hạn hoặc là những tùy chọn riêng tư. Cả hai tuy có chung chức năng là lưu trữ dữ liệu nhưng bên trong nó lại khác nhau. Session dùng để lưu trữ dữ liệu trên Server và đồng thời nó sẽ có một đoạn code dữ liệu được lưu trữ ở client (cookie). Còn Cookie thì lưu trữ dữ liệu trên máy Client. Để hiểu rõ hơn thì ta phải vào tìm hiểu cụ thể.

1. Session trong PHP

Biến Session trong PHP được dùng để lưu trữ thông tin của người dùng hoặc là lưu trữ tùy chọn cấu hình hệ thống cho người dùng. Đặc biệt mỗi client sẽ có một ID session khác nhau nên việc thông tin Session ở Client A bị ảnh hưởng qua Client B là điều không thể. Thông thường chúng ta sử dụng Session để lưu thông tin đăng nhập, giỏ hàng hoặc những dữ liệu mang tính chất tạm thời và mỗi client sẽ có dư liệu khác nhau.

Đăng ký session

Trước khi bạn sử dụng session bạn phải khai báo cho PHP biết bằng cách đặt dòng lệnh session_start() phía trên đầu mỗi file. Nếu bạn dùng nhiều file include lẫn nhau thì đặt nó ở file chính.

Ví dụ:

<!--?php session_start(); ?-->
<div>TODO write content</div>

Dòng lệnh session_start() sẽ đăng ký phiên làm việc của người dùng trên Server, từ đó Server sẽ tạo ra một ID riêng không trùng lặp để nhận diện cho client hiện tại. Dòng này bắt buộc có.

Lưu trữ session

Tất cả Session được lưu trữ trong biến toàn cục $_SESSION, vì thể để lưu thêm dữ liệu Session hay là thay đổi dữ liệu của Session thì ta sẽ thao tác trên biến đó. Lưu ý với bạn trước khi dùng phép lấy giá trị Session bạn phải kiểm tra sesion đó có tồn tại không rồi hãy lấy.

Để lưu một giá trị mới vào Session ta dùng cú pháp như sau: $_SESSION['session_name'] = $session_value

Để lấy giá trị Session ta dùng cú pháp sau: $tenbien = $_SESSION['session_name']. Như tôi đề cập ở trên trước khi bạn lấy giá trị Session bạn nên kiểm tra nó có tồn tại không rồi hãy lấy.

Ví dụ:

Bạn tạo một file session.php và copy nội dung này vào:

<!--?php session_start(); // Nếu click vào nút Lưu Session if (isset($_POST['save-session'])) { // Lưu Session $_SESSION['name'] = $_POST['username']; } ?-->
<h1></h1>
<form action="" method="POST"><input name="username" type="text" value="" />
<input name="save-session" type="submit" value="Lưu Session" /></form>

Bạn hãy nhập tên vào sau đó nhấn vào button Lưu Session. sau đó bạn refresh lại trang bạn sẽ thấy thông tin bạn đã được lưu trữ trên Server nên có hiển thị ra.

Xóa session

Tất cả các giá trị Session đều lưu trữ trong biến $_SESSION nên để xóa nó các bạn chỉ việc dùng hàm unset($_SESSION['session_name']), trong đó hàm unset dùng để giải phóng một biến ra khỏi bộ nhớ.

Nếu bạn muốn xóa hết tất cả các Session thì ta dùng hàm session_destroy().

Ví dụ:

// Xóa session name
unset($_SESSION['name']);
 
// Xóa hết session
session_destroy();

Còn rất nhiều hàm khác các bạn tham khảo tại http://php.net/manual/en/book.session.php

Bài tiếp theo chúng ta sẽ cũng nghiên cứu các hàm isset() và empty() trong php

Share This Post

Post Comment