Cách kiểm tra xem phiên có bắt đầu trong PHP không

Khi bạn làm việc với một ứng dụng, bạn mở ứng dụng đó, thực hiện một số thay đổi rồi đóng ứng dụng đó. Đ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

Biến phiên giải quyết vấn đề này bằng cách lưu trữ thông tin người dùng sẽ được sử dụng trên nhiều trang (e. g. tên người dùng, màu sắc yêu thích, v.v.). Theo mặc định, các biến phiên kéo dài cho đến khi người dùng đóng trình duyệt

Vì thế;

Mẹo. Nếu bạn cần lưu trữ vĩnh viễn, 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 chức năng session_start()

Các biến phiên được đặt với 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 tôi bắt đầu một phiên PHP mới và đặt một số biến phiên

Thí dụ

// Bắt đầu phiên
session_start();
?>


// Đặt biến phiên
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat . ";
echo "Session variables are set.";
?>


Chạy ví dụ »

Ghi chú. Hàm session_start() phải là thứ đầu tiên trong tài liệu của bạn. Trước bất kỳ thẻ HTML nào



Nhận các giá trị biến phiên PHP

Tiếp theo, chúng tôi tạo một trang khác có tên "demo_session2. php". Từ trang này, chúng tôi sẽ truy cập thông tin phiên mà chúng tôi đã đặt trên trang đầu tiên ("demo_session1. php")

Lưu ý rằng các biến phiên không được chuyển riêng lẻ cho từng trang mới, thay vào đó chúng được truy xuất từ ​​phiên mà chúng tôi mở ở đầu mỗi trang (_______5)

Cũng lưu ý rằng tất cả các giá trị biến phiên được lưu trữ trong biến $_SESSION toàn cầu

Thí dụ

session_start();
?>


// Echo các biến phiên đã được đặt ở trang trước
echo "Favorite color is ". $_SESSION["màu yêu thích"]. ".
";
echo "Con vật yêu thích là ". $_SESSION["favanimal"]. ". ";
?>


Chạy ví dụ »

Một cách khác để hiển thị tất cả các giá trị biến phiên cho phiên người dùng là chạy đoạn mã sau

Thí dụ

session_start();
?>


print_r($_SESSION);
?>


Chạy ví dụ »

Làm thế nào nó hoạt động?

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ư thế này. 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 khớp thì truy cập phiên đó, nếu không thì bắt đầu phiên mới

Để kiểm tra xem một phiên đã tồn tại hay đã bắt đầu trong PHP, bạn có thể sử dụng hàm isset() hoặc session_status()

Hàm session_status() sẽ trả về

if (isset($_SESSION)) {
    print "session exists";
}
1 khi bạn bật phiên và có một phiên

Bạn có thể sử dụng chức năng này bên trong khối

if (isset($_SESSION)) {
    print "session exists";
}
2 để kiểm tra phiên của mình như sau

php
// 👇 enable PHP session
session_start();

// 👇 check if session exists. returns true
if (session_status() == PHP_SESSION_ACTIVE) {
    print "session already exists";
}

Khi bạn đã gọi hàm session_start(), thì một phiên làm việc đã được tạo bởi PHP

Ngoài việc sử dụng session_status(), bạn cũng có thể sử dụng chức năng isset() và kiểm tra siêu toàn cầu của

if (isset($_SESSION)) {
    print "session exists";
}
1 như thế này

if (isset($_SESSION)) {
    print "session exists";
}

Sử dụng hàm isset() cũng cho phép bạn kiểm tra xem một khóa cụ thể có tồn tại trong mảng

if (isset($_SESSION)) {
    print "session exists";
}
1 hay không như hình bên dưới

Bạn có thể kiểm tra xem một biến đã được đặt trong phiên của người dùng hay chưa bằng cách sử dụng hàm isset(), giống như một biến thông thường. Bởi vì $_SESSION superglobal chỉ được khởi tạo sau khi session_start() được gọi, bạn cần gọi session_start() trước khi sử dụng isset() trên một biến phiên. Ví dụ


Tất nhiên, bạn cũng có thể sử dụng hàm empty() với dữ liệu phiên hoặc bất kỳ hàm nào khác - mảng $_SESSION và dữ liệu của nó có thể được sử dụng như bất kỳ mảng nào khác

Bạn muốn học PHP 7?

Hacking with PHP đã được cập nhật đầy đủ cho PHP 7 và hiện có sẵn dưới dạng PDF có thể tải xuống. Nhận hơn 1200 trang học PHP thực hành ngay hôm nay

Nếu điều này hữu ích, vui lòng dành chút thời gian để nói với những người khác về Hacking với PHP bằng cách tweet về nó

Tại sao session_start() được sử dụng trong PHP?

session_start() tạo phiên hoặc tiếp tục phiên hiện tại dựa trên mã định danh phiên được truyền qua yêu cầu GET hoặc POST hoặc được truyền qua cookie. When session_start() is called or when a session auto starts, PHP will call the open and read session save handlers.

Trạng thái phiên trong PHP là gì?

Hàm PHP - session_status() . Hàm session_status() trả về trạng thái của phiên hiện tại .

Làm cách nào để bắt đầu phiên trong PHP?

Bạn có thể bắt đầu một phiên trong PHP bằng cách sử dụng hàm session_start() . Theo mặc định, chức năng này sẽ kiểm tra phiên hiện có trước tiên. Nếu một phiên đã tồn tại, nó sẽ không làm gì cả, nhưng nó sẽ tạo một phiên nếu không có phiên nào tồn tại trước đó.

Hàm session_start() và Session_destroy() trong PHP là gì?

session_destroy() hủy tất cả dữ liệu được liên kết với phiên hiện tại . Nó không bỏ đặt bất kỳ biến toàn cục nào được liên kết với phiên hoặc bỏ đặt cookie phiên. Để sử dụng lại các biến phiên, session_start() phải được gọi. Ghi chú. Bạn không cần phải gọi session_destroy() từ mã thông thường.