Hướng dẫn dùng web session trong PHP



Session là một cách để lưu trữ thông tin (trong các biến) được sử dụng trên nhiều trang.

Không giống như một cookie, thông tin được lưu trữ trên server, chứ không được lưu trữ trên máy tính người dùng.


Nội dung chính

  • Session trong PHP là gì?
  • Bắt đầu một session trong PHP
  • Đọc giá trị biến session trong PHP
  • Thay đổi giá trị biến session trong PHP
  • Xóa biến session trong PHP
    • Session hoạt động như thế nào? Làm sao để biết nó là tôi?

Khi bạn làm việc với một ứng dụng, bạn mở nó, thực hiện một số thay đổi, và sau đó bạn đóng nó lại. Điều này giống như một phiên (session). Máy tính biết bạn là ai. Nó biết khi bạn bắt đầu ứng dụng và khi bạn kết thúc. Nhưng trên internet có một vấn đề: máy chủ web không biết bạn là ai hoặc bạn làm gì, vì địa chỉ HTTP không duy trì trạng thái.

Các biến session giải quyết vấn đề này bằng cách lưu trữ thông tin người dùng được sử dụng trên nhiều trang (ví dụ: tên người dùng, sở thích, v.v.). Theo mặc định, các biến session tồn tại cho đến khi người dùng đóng trình duyệt.

Vì thế; Biến phiên giữ thông tin về một người dùng duy nhất và có sẵn cho tất cả các trang trong một ứng dụng.



Bắt đầu một session trong PHP

Hàm session_start() được sử dụng để bắt đầu một session.

Biến session được đặt bằng biến toàn cục PHP: $_SESSION.

Bây giờ, hãy tạo một trang mới có tên là "session-trong-php-1.php". Trong trang này, chúng tôi bắt đầu một PHP session mới và thiết lập một số biến session:

File: "session-trong-php-1.php"









Kết quả:

Các biến session đã được tạo.

Xem kết quả ở tab mới.

Chú ý: Hàm Cácsession_start() phải đặt TRƯỚC thẻ .


Đọc giá trị biến session trong PHP

Tiếp theo, chúng ta tạo một trang khác gọi là "session-trong-php-2.php". Từ trang này, chúng ta sẽ truy cập thông tin session mà chúng ta đã tạo ra trên trang đầu tiên ("session-trong-php-1.php").

Lưu ý rằng các biến session không được chuyển riêng lẻ đến từng trang mới, thay vào đó chúng được truy cập từ session mà chúng ta khai báo ở đầu mỗi trang (session_start()) và các giá trị biến session được lưu trữ trong biến toàn cầu $_SESSION:

File: "session-trong-php-2.php"





";
echo "username là: " . $_SESSION["username"];
?>



Kết quả:

user_id là: TT123456
username là: david123

Xem kết quả ở tab mới.

Để in tất cả các biến session, sử dụng lệnh sau:



Thay đổi giá trị biến session trong PHP

Để thay đổi biến session, chỉ ghi đè lên biến đó:

File: "session-trong-php-3.php"









Kết quả:

Array ( [user_id] => TT123456 [username] => viettuts.vn )

Xem kết quả ở tab mới.


Xóa biến session trong PHP

Để xóa tất cả các biến session toàn cầu hãy sử dụng session_unset() và session_destroy():

File: "session-trong-php-4.php"









Kết quả:

Xem kết quả ở tab mới.

Session hoạt động như thế nào? Làm sao để biết nó là tôi?

Hầu hết các session đều thiết lập một user-key trên máy tính của người dùng giống như sau: 765487cf34ert8dede5a562e4f3a7e12. Sau đó, khi một phiên được mở trên một trang khác, nó sẽ quét máy tính cho một user-key. Nếu phù hợp, nó sẽ truy cập vào phiên đó, nếu không, nó sẽ bắt đầu một phiên mới.



Trong bài này, chúng ta sẽ tìm hiểu về session trong PHP. Để học tốt bài này, các bạn cần đọc lại bài Cài đặt môi trường lập trình Web PHP với XAMPP để biết cách chạy ứng dụng web PHP với XAMPP.

Session là một cách để lưu trữ thông tin được sử dụng trên nhiều trang (page) của một website. Khác với cookie, session chỉ được lưu trữ trên web server.

Hướng dẫn dùng web session trong PHP

Khi truy cập một website, user có thể chuyển request từ trang này sang trang khác. Ví dụ, user vào trang login để đăng nhập. Sau đó, user vào trang product để mua sản phẩm. Thông tin user login phải được lưu trữ lại để tránh việc user phải đăng nhập lại khi qua trang khác.

Session giúp giải quyết vấn đề này bằng cách lưu trữ thông tin user để sử dụng trên nhiều trang như username, product_id,… Mặc định, các session sẽ tồn tại cho đến khi user đóng trình duyệt.

Trong PHP, các session được tạo và lưu trữ trong một folder tạm. Folder này được thiết lập trong file php.ini (mở file php.ini xem hướng dẫn ở phần Thay đổi default timezone trong PHP) với cấu hình session.save_path. Mặc định, session.save_path="C:\xampp\tmp".

2. Bắt đầu một session trong PHP

Trong PHP, chúng ta sử dụng hàm session_start() để bắt đầu một session. Tất cả những dữ liệu trong session được lưu trữ bởi biến mảng $_SESSION.



  
    Session in PHP
  

  
  
session1 page
session2 page

Trong ví dụ trên, chúng ta gọi hàm session_start() để bắt đầu một session. Sau đó, một số giá trị được lưu trong session bằng biến mảng $_SESSION. Và session1 pagesession2 page là các trang khác trong website.

Lưu ý: Hàm session_start() phải được gọi đầu tiên trong file php, trước thẻ .

3. Lấy các giá trị lưu trong session với PHP

session1 page, chúng ta sẽ lấy các giá trị được lưu trong session.



  
    Session1 page in PHP
  

  Domain name is " . $_SESSION["domainname"] . ".
"; echo "Number of post is " . $_SESSION["numberpost"] . ".
"; ?>

Chúng ta có thể xem tất cả giá trị được lưu trong session bằng các in ra biến mảng $_SESSION.



  
    Session2 page in PHP
  

  session id: ".session_id();
  ?>


Kết quả
Array ( 
[domainname] => gochocit.com 
[numberpost] => 410 
)
session id: 58j58aoogh7mktkmkohce6npns

Khi một user truy cập đến website và bắt đầu một session thì session đó sẽ được gán một session id. Sử dụng hàm session_id() để lấy session id của session hiện tại.

4. Thay đổi và xóa session trong PHP

Để thay đổi các giá trị lưu trong session, chúng ta chỉ cần gán lại lại giá trị cho các biến lưu trong session.



  
    Session2 page in PHP
  

  


Để xóa tất cả giá trị lưu trong session và hủy luôn session thì sử dụng hàm session_unset()session_destroy().



  
    Session2 page in PHP
  

  


Chúng ta vừa tìm hiểu cách sử dụng session trong PHP. Các bạn cần nắm vững các kiến thức này vì chúng sẽ được sử dụng rất nhiều trong lập trình web.

  • Hàm is_array() trong PHP
  • Lập trình giao tiếp cảm biến LM35 với board mạch Arduino
  • Các hàm toán học (math function) trong PHP
  • Kiểu dữ liệu enum trong C++
  • Các thao tác trên cấu trúc dữ liệu Tuple trong Python