PHP - $_SESSION

Một trong những biến siêu toàn cục trong PHP, $_SESSION là một mảng liên kết của các biến phiên có sẵn trong kịch bản hiện tại. $HTTP_SESSION_VARS cũng chứa cùng một thông tin, nhưng nó không phải là siêu toàn cục và hiện đã bị loại bỏ.

What is a Session?

Một phiên (Session) là một cách thay thế để làm cho dữ liệu có thể truy cập được trên các trang của toàn bộ website. Đây là khoảng thời gian giữa lúc người dùng thiết lập kết nối với máy chủ và lúc kết nối bị ngắt. Trong khoảng thời gian này, người dùng có thể điều hướng đến các trang khác nhau. Nhiều lần, người ta mong muốn rằng một số dữ liệu có sẵn liên tục trên các trang. Điều này được hỗ trợ bởi session variables .

Một phiên tạo ra một tệp trong một thư mục tạm thời trên máy chủ, nơi các biến phiên đã đăng ký và giá trị của chúng được lưu trữ. Dữ liệu này sẽ có sẵn cho tất cả các trang trên trang web trong suốt lượt truy cập đó.

Máy chủ gán một SESSIONID duy nhất cho mỗi phiên. Vì HTTP là một giao thức không trạng thái, dữ liệu trong các biến phiên sẽ tự động bị xóa khi phiên làm việc kết thúc.

The session_start() Function

Để kích hoạt quyền truy cập vào dữ liệu phiên, hàm session_start() phải được gọi. Hàm session_start() tạo một phiên hoặc tiếp tục phiên hiện tại dựa trên một định danh phiên được truyền qua yêu cầu GET hoặc POST, hoặc được truyền qua cookie.

session_start(array $options = []): bool

Hàm này trả về true nếu một phiên làm việc đã được khởi động thành công, nếu không, nó trả về false .

Handling Session Variables

Để tạo một biến phiên mới, hãy thêm một cặp khóa-giá trị vào mảng $_SESSION.

$_SESSION[ "var"]=value;

Để đọc lại giá trị của một biến phiên, bạn có thể sử dụng các câu lệnh echo/print , hoặc var_dump() hoặc print_r() functions.

echo $_SESSION[ "var"];

Để lấy danh sách tất cả các biến phiên trong phiên hiện tại, bạn có thể sử dụng một vòng lặp foreach để duyệt qua $_SESSION

foreach ($_SESSION as $key=>$val)
echo $key . "=>" . $val;

Để xóa tất cả dữ liệu phiên một cách thủ công, có hàm session_destroy() . Một biến phiên cụ thể cũng có thể được giải phóng bằng cách gọi hàm unset() .

unset($_SESSION[ "var"]);

List of Session Functions

Trong PHP, có nhiều hàm tích hợp sẵn để quản lý dữ liệu phiên.

Session Functions Description
session_abort Discard session array changes and finish session
session_cache_expire Return current cache expire
session_cache_limiter Get and/or set the current cache limiter
session_commit Alias of session_write_close
session_create_id Create new session id
session_decode Decodes session data from a session encoded string
session_destroy Destroys all data registered to a session
session_encode Encodes the current session data as a session encoded string
session_gc Perform session data garbage collection
session_get_cookie_params Get the session cookie parameters
session_id Get and/or set the current session id
session_is_registered Find out whether a global variable is registered in a session
session_module_name Get and/or set the current session module
session_name Get and/or set the current session name
session_regenerate_id Update the current session id with a newly generated one
session_register_shutdown Session shutdown function
session_register Register one or more global variables with the current session
session_reset Re-initialize session array with original values
session_save_path Get and/or set the current session save path
session_set_cookie_params Set the session cookie parameters
session_set_save_handler Sets user-level session storage functions
session_start Start new or resume existing session
session_status Returns the current session status
session_unregister Unregister a global variable from the current session
session_unset Free all session variables
session_write_close Write session data and end session

Example

Đoạn mã PHP sau đây tạo một biểu mẫu HTML. Dữ liệu biểu mẫu được sử dụng để tạo ba biến phiên. Một liên kết sẽ đưa trình duyệt đến một trang khác, nơi đọc lại các biến phiên.

Lưu mã này dưới dạng "test.php" trong thư mục gốc tài liệu, và mở nó trong trình duyệt của khách hàng. Nhập dữ liệu và nhấn nút Submit .

<html>
<body>
   <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
      <h3>User's ID: <input type="text" name="ID"/></h3>
      <h3>Your Name: <input type="text" name="name"/></h3>
      <h3>Enter Age: <input type="text" name="age"/></h3>
      <input type="submit" value="Submit"/>
   </form>
   <?php
      session_start();
      if ($_SERVER["REQUEST_METHOD"] == "POST") {
         $_SESSION['UserID'] = $_POST['ID'];
         $_SESSION['Name'] = $_POST['name'];
         $_SESSION['age'] = $_POST['age'];
      }
      echo "Following Session Variables Created: \n";

      foreach ($_SESSION as $key=>$val)
      echo "<h3>" . $key . "=>" . $val . "</h3>";
      echo "<br/>" . '<a href="hello.php">Click Here</a>';
   ?>
</body>
</html>

Khi bạn nhấp vào nút "Gửi", nó sẽ hiển thị danh sách tất cả các biến phiên đã được tạo.

PHP $ SESSION 1

Tiếp theo, hãy có đoạn kịch bản sau trong tệp "hello.php" và lưu lại.

<?php
session_start();
   echo "<h2>Following Session variables Read:</h2>";
   foreach ($_SESSION as $key=>$val)
   echo "<h3>" . $key . "=>" . $val . "</h3>";
?>

Bây giờ, hãy làm theo liên kết trên trang "test.php" để điều hướng đến "hello.php". Nó sẽ hiển thị các biến phiên được đọc.

PHP $ SESSION 2