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ỏ.
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.
Để 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 .
Để 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"]);
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 |
Đ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.
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.