Làm cách nào để kiểm tra phiên hết hạn trong PHP?

Khi người dùng không hoạt động và quên đăng xuất khỏi trang web, điều đó có thể gây ra sự cố bảo mật. Vì vậy, khi trình duyệt bị đóng, theo mặc định, phiên PHP sẽ bị hủy

Tại đây, bạn sẽ tìm hiểu cách bắt đầu một phiên và cách sửa đổi phiên đó một cách chính xác bằng cách sử dụng PHP

Bây giờ, hãy xem cách bắt đầu một phiên sử dụng các hàm PHP

Nếu bạn muốn bắt đầu một phiên làm việc với PHP, bạn có thể sử dụng hàm session_start(). Cú pháp sử dụng như sau

Sau khi bắt đầu một phiên, bạn có thể tạo các biến phiên để sử dụng chúng trong tương lai

Bạn có thể tạo chúng và lưu trữ chúng trong các biến bằng cách hành động như hình bên dưới

  • Tạo biến phiên 'var1' và gán giá trị 3 cho nó
  • Gán một biến cho phiên

$username="Michael";
$_SESSION['username']=$username;

Sau khi tạo phiên và các biến của nó, bạn có thể xóa chúng

Nếu bạn muốn xóa một phiên cụ thể, bạn có thể chạy lệnh này

Để hủy phiên hoàn toàn, bạn có thể hành động như thế này

Hãy tưởng tượng, tồn tại một trang đăng nhập và nút "Đăng nhập". Sau khi nhấp vào nút đó, phiên bắt đầu và các biến được đặt. Biến phiên để lưu trữ thời gian đăng nhập được sắp xếp. Sau đó, nó được chuyển hướng đến trang chủ của người dùng

Hãy xem một ví dụ về các hành động trên trang đăng nhập

Để giữ phiên trên trang chủ, bạn nên gọi hàm session_start(). Nó cho phép lấy các biến phiên từ trang. Để tính thời gian hiện tại, bạn có thể sử dụng hàm time(). Cần lưu ý rằng sự khác biệt giữa biến phiên được tạo tại thời điểm đăng nhập và thời gian hiện tại không được vượt quá thời gian chờ mong muốn. Khi thời lượng vượt quá, phiên sẽ bị hủy. Do đó, trang sẽ được chuyển hướng đến trang đăng nhập

Để hiểu rõ hơn về những gì đang xảy ra trên trang chủ, hãy xem ví dụ bên dưới

Hàm PHP này được sử dụng để bắt đầu một phiên mới hoặc tiếp tục phiên hiện có. Khi session_start được chạy, PHP gọi trình xử lý lưu phiên mở và đọc. Nó có thể là một trình xử lý lưu sẵn có, được cung cấp theo mặc định hoặc bởi các phần mở rộng của PHP

Hàm session_start() được sử dụng để tạo phiên làm việc mới cho người dùng. Tên phiên mặc định là PHPSESSID và nó được sử dụng để kiểm tra phiên có tồn tại hay không. Nếu không tìm thấy cookie hoặc thông tin phiên thì một phiên mới sẽ được tạo cho người dùng, nếu không, phiên hiện tại sẽ được sử dụng cho người dùng

Đặt thời gian chờ phiên

Giới hạn thời gian chờ của phiên có thể được đặt bằng cách đặt giá trị của hai lệnh trong tệp php. ini hoặc sử dụng hàm ini_set() trong tập lệnh PHP. Các chỉ thị được đưa ra dưới đây

  1. phiên họp. gc_maxlifetime
  2. Nó được sử dụng để đặt giới hạn thời gian tính bằng giây để lưu trữ thông tin phiên trong máy chủ trong một thời gian dài

  3. phiên họp. cookie_lifetime
  4. Nó được sử dụng để đặt giới hạn thời gian hết hạn cho cookie PHPSESSID

Đặt thời gian chờ phiên trong PHP

Các cách đặt giá trị thời gian chờ của phiên trong PHP để xử lý phiên của người dùng đã được trình bày trong phần này của hướng dẫn bằng cách sử dụng nhiều ví dụ

Ví dụ 1. Đặt giá trị thời gian chờ của phiên bằng cách sử dụng lệnh PHP

Tạo một tệp PHP với tập lệnh sau để biết cách thiết lập thời gian chờ của phiên bằng cách sử dụng các lệnh PHP và xử lý các phiên dựa trên các giá trị của lệnh. Hàm ini_set() đã được sử dụng trong tập lệnh để đặt giá trị của phiên. gc_maxlifetime và phiên. chỉ thị cookie_lifetime. Thời lượng của phiên đã được đặt thành 2 giây cho mục đích thử nghiệm. Biến siêu toàn cục mảng $_COOKIE đã được sử dụng ở đây để xử lý phiên. Phiên mới sẽ được tạo cho người dùng khi tập lệnh sẽ thực thi trong trình duyệt và sau hai giây, phiên sẽ hết hạn



// Đặt thời gian chờ phiên trong 2 giây

$timeout = 2;

// Đặt thời gian tồn tại tối đa của phiên

ini_set( "phiên. gc_maxlifetime", $timeout );

// Đặt thời gian tồn tại của cookie của phiên

ini_set( "phiên. cookie_lifetime", $timeout );


// Bắt đầu một phiên làm việc mới

session_start();

// Đặt tên phiên mặc định

$s_name = session_name();


// Kiểm tra phiên có tồn tại hay không

if(isset( $_COOKIE[ $s_name ] )) {


    setcookie( $s_name, $_COOKIE[ $s_name ], time() + $timeout, '/' );

    echo "Phiên được tạo cho $s_name . """""""""""""""""""""""""""";

}

khác

    echo "Phiên đã hết hạn. """""""""""""""""""""""""""";

?>

đầu ra

Đầu ra sau sẽ xuất hiện sau khi thực hiện đoạn mã trên lần đầu tiên. Đầu ra hiển thị tên người dùng phiên mặc định, PHPSESSID

Làm cách nào để kiểm tra phiên hết hạn trong PHP?

Đầu ra sau sẽ xuất hiện nếu trang được làm mới sau 2 giây

Làm cách nào để kiểm tra phiên hết hạn trong PHP?

Ví dụ-2. Đặt giá trị thời gian chờ của phiên sử dụng mảng $_SESSION

Tạo một tệp PHP với tập lệnh sau để đặt giá trị thời gian chờ của phiên bằng cách sử dụng biến siêu toàn cục PHP, $_SESSION. Thời lượng của phiên đã được đặt thành 5 giây cho mục đích thử nghiệm. Tiếp theo, thời gian yêu cầu của người dùng cho trang đã được lưu trữ trong một biến có tên $time. Khi khoảng thời gian giữa biến $time và hoạt động cuối cùng của người dùng dài hơn 5 giây, thì phiên hiện tại của người dùng sẽ bị hủy và một phiên mới sẽ được tạo. Các hàm session_unset() và session_destroy() đã được sử dụng trong tập lệnh để hủy phiên



// Bắt đầu một phiên làm việc mới

session_start();

// Đặt thời lượng phiên trong 5 giây

$duration = 5;

//Đọc thời gian yêu cầu của người dùng

$time = $_SERVER['REQUEST_TIME'];


// Kiểm tra phiên của người dùng có tồn tại hay không

if (isset($_SESSION['LAST_ACTIVITY']) &&

    ($time - $_SESSION['LAST_ACTIVITY']) > $duration) {

    //Bỏ đặt biến phiên

    session_unset();

    //Hủy phiên

    session_destroy();

    //Bắt đầu một phiên mới khác

    session_start();

    echo "Phiên mới được tạo. """""""""""""""""""""""""""""""""""";

}

khác

    echo "Đã tồn tại phiên hiện tại. """""""""""""""""""""""""""""""""""";  


// Đặt thời gian cho hoạt động cuối cùng của người dùng

$_SESSION['LAST_ACTIVITY'] =< $time;

?>

đầu ra

Đầu ra sau sẽ xuất hiện sau khi thực hiện đoạn mã trên lần đầu tiên

Làm cách nào để kiểm tra phiên hết hạn trong PHP?

Đầu ra sau sẽ xuất hiện nếu trang được làm mới sau 5 giây

Làm cách nào để kiểm tra phiên hết hạn trong PHP?

Ví dụ-3. Đặt giá trị thời gian chờ của phiên sử dụng mảng $_SESSION và hàm time()

Tạo tệp PHP với tập lệnh sau để đặt giá trị thời gian chờ của phiên bằng cách sử dụng biến siêu toàn cầu PHP, $_SESSION và hàm PHP tích hợp, time(). Hàm time() trả về giá trị dấu thời gian hiện tại của hệ thống. Thời lượng của phiên đã được đặt thành 600 giây (10 phút) trong tập lệnh

$_SESSION[‘start’] đã được sử dụng để lưu trữ thời gian bắt đầu của phiên. Khi khoảng thời gian giữa thời gian hiện tại và thời gian bắt đầu phiên kéo dài hơn 10 phút, thì phiên hiện tại của người dùng sẽ bị hủy. Các hàm session_unset() và session_destroy() đã được sử dụng trong tập lệnh như ví dụ trước để hủy phiên




// Bắt đầu một phiên làm việc mới

session_start();


// Kiểm tra thời gian bắt đầu phiên có được đặt hay không

nếu(. isset($_SESSION['start']))

{

    //Đặt thời gian bắt đầu phiên

    $_SESSION['start'] = time();

}


// Kiểm tra phiên đã hết hạn hay chưa

if (isset($_SESSION['start']) && (time() - $_SESSION['start'] >600)) {

    //Bỏ đặt biến phiên

    session_unset();

    //Hủy phiên

    session_destroy();

    echo "Phiên đã hết hạn. """"""""""""""""""""""""""""""""""""""""""""";

}

khác

    echo "Đã tồn tại phiên hiện tại. """"""""""""""""""""""""""""""""""""""""""""";

?>

đầu ra

Đầu ra sau sẽ xuất hiện sau khi thực hiện đoạn mã trên lần đầu tiên. Thông báo hết hạn sẽ được hiển thị nếu trang được làm mới sau 10 phút

Làm cách nào để kiểm tra phiên hết hạn trong PHP?

Phần kết luận

Ba cách khác nhau để đặt giá trị thời gian chờ của phiên để xử lý phiên của người dùng trong PHP đã được trình bày trong hướng dẫn này. Người dùng PHP sẽ có khái niệm cơ bản về triển khai phiên của người dùng bằng cách sử dụng các biến $_COOKIE và $_SESSION và có thể áp dụng nó trong tập lệnh của họ sau khi đọc hướng dẫn này

Làm cách nào để kiểm tra trạng thái phiên trong PHP?

Luôn sử dụng session_status() , để kiểm tra xem một phiên đã bắt đầu và đang hoạt động chưa. if(session_id() === "") session_start();

Làm cách nào để hiển thị thời gian phiên trong PHP?

Hàm time() trả về giá trị dấu thời gian hiện tại của hệ thống . Thời lượng của phiên đã được đặt thành 600 giây (10 phút) trong tập lệnh. $_SESSION['start'] đã được sử dụng để lưu trữ thời gian bắt đầu của phiên.

Làm thế nào kiểm tra giá trị phiên là null hay không trong PHP?

Nếu bạn muốn kiểm tra xem có phiên nào hay không, bạn có thể muốn sử dụng hàm session_id() . session_id() trả về id phiên cho phiên hiện tại hoặc chuỗi trống ("") nếu không có phiên hiện tại (không tồn tại id phiên hiện tại).

Phiên của bạn đã hết hạn là gì?

Sau khi người dùng không hoạt động trong một khoảng thời gian nhất định, một số nền tảng Tài nguyên điện tử nhất định sẽ thông báo cho họ rằng phiên của họ đã hết hạn và tự động đăng xuất họ .