Tóm Tắt
SESSION PHP là gì?
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ó. Điều này giống như một phiên. Máy tính biết bạn là ai. Nó biết khi nào bạn bắt đầu ứng dụng và khi nào 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 để sử dụng trên nhiều trang (ví dụ: tên người dùng, màu yêu thích, v.v.). Theo mặc định, các biến session kéo dài cho đến khi người dùng đóng trình duyệt.
Vì thế, các biến session 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.
Mẹo: Nếu bạn cần một bộ nhớ lâu dài, bạn có thể muốn lưu trữ dữ liệu trong cơ sở dữ liệu.
Bắt đầu một phiên PHP
Một phiên được bắt đầu với hàm session_start()
.
Các biến session được thiết lập 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 “demo_session1.php”. Trong trang này, chúng ta bắt đầu một phiên PHP mới và đặt một số biến session:
<?php
// Bắt đầu phiên
session_start();?>
<
!DOCTYPEhtml
>
<
html>
<
body>
<?php
// Thiết lập các biến session
$_SESSION
["favcolor"
] ="green"
;$_SESSION
["favanimal"
] ="cat"
;echo
"Các biến session đã được thiết lập."
;?>
<
/body>
<
/html>
Lưu ý: Hàm
session_start()
phải nằm ở dòng đầu tiên trong tài liệu của bạn và nằm trước bất kỳ thẻ HTML nào.
Nhận giá trị biến session PHP
Tiếp theo, chúng ta tạo một trang khác có tên “demo_session2.php”. Từ trang này, chúng ta sẽ truy cập thông tin session mà chúng ta đã thiết lập ở trang đầu tiên (“demo_session1.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 xuất từ phiên mà chúng ta mở ở đầu mỗi trang ( session_start()
).
Cũng lưu ý rằng tất cả các giá trị của biến session được lưu trữ trong biến mảng global $ _SESSION:
<?php
session_start();?>
<
!DOCTYPEhtml
>
<
html>
<
body>
<?php
// In ra các biến session đã được thiết lập ở trang trước:
echo
"Màu yêu thích là "
.$_SESSION
["favcolor"
] .".<br>"
;echo
"Con vật yêu thích là "
.$_SESSION
["favanimal"
] ."."
;?>
<
/body>
<
/html>
Một cách khác để hiển thị tất cả các giá trị biến session cho phiên người dùng là chạy đoạn mã sau:
<?php
session_start();?>
<
!DOCTYPEhtml
>
<
html>
<
body>
<?php
print_r($_SESSION
);?>
<
/body>
<
/html>
Lưu ý cách thức hoạt động của phiên:
Hầu hết các phiên đặt khóa người dùng trên máy tính của người dùng trô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 để tìm khóa người dùng. Nếu có một kết quả 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.
Sửa đổi một biến session PHP
Để thay đổi một biến session, chỉ cần ghi đè lên đó:
<?php
session_start();?>
<
!DOCTYPEhtml
>
<
html>
<
body>
<?php
// để thay đổi giá trị biến session, đơn giản là gán cho nó một giá trị khác
$_SESSION
["favcolor"
] ="yellow"
; print_r($_SESSION
);?>
<
/body>
<
/html>
Hủy một phiên PHP
Để xóa tất cả các biến session global và hủy phiên, hãy sử dụng session_unset()
và session_destroy()
:
<?php
session_start();?>
<
!DOCTYPEhtml
>
<
html>
<
body>
<?php
// Xóa tất cả các biến session
session_unset();// Hủy phiên
session_destroy();echo
"Tất cả các biến session bây giờ đã bị xóa, và phiên cũng bị hủy."
?>
<
/body>
<
/html>