Yii - Phiên
Phiên làm cho dữ liệu có thể truy cập được trên các trang khác nhau. Một phiên tạo một tệp trên máy chủ trong một thư mục tạm thời nơi lưu trữ tất cả các biến phiên. Dữ liệu này có sẵn cho tất cả các trang của trang web của bạn khi người dùng cụ thể đó truy cập.
Khi một phiên bắt đầu, điều sau sẽ xảy ra:
PHP tạo một ID duy nhất cho phiên cụ thể đó.
Cookie có tên PHPSESSID được gửi ở phía máy khách (tới trình duyệt).
Máy chủ tạo một tệp trong thư mục tạm thời nơi tất cả các biến phiên được lưu.
Khi máy chủ muốn truy xuất giá trị từ một biến phiên, PHP sẽ tự động lấy ID phiên duy nhất từ cookie PHPSESSID. Sau đó, nó sẽ tìm tệp cần thiết trong thư mục tạm thời.
Để bắt đầu một phiên, bạn nên gọi session_start()chức năng. Tất cả các biến phiên được lưu trữ trong$_SESSIONbiến toàn cục. Bạn cũng có thể sử dụngisset() để kiểm tra xem biến phiên có được đặt hay không -
<?php
session_start();
if( isset( $_SESSION['number'] ) ) {
$_SESSION['number'] += 1; }else { $_SESSION['number'] = 1;
}
$msg = "This page was visited ". $_SESSION['number'];
$msg .= "in this session."; echo $msg;
?>
Để hủy một phiên, bạn nên gọi session_destroy()chức năng. Để hủy một biến phiên duy nhất, hãy gọiunset() chức năng -
<?php
unset($_SESSION['number']);
session_destroy();
?>
Sử dụng phiên ở Yii
Phiên cho phép dữ liệu được duy trì theo yêu cầu của người dùng. Trong PHP, bạn có thể truy cập chúng thông qua$_SESSIONBiến đổi. Trong Yii, bạn có thể truy cập vào các phiên thông qua thành phần ứng dụng phiên.
Step 1 - Thêm actionOpenAndCloseSession phương pháp cho SiteController.
public function actionOpenAndCloseSession() {
$session = Yii::$app->session;
// open a session
$session->open(); // check if a session is already opened if ($session->isActive) echo "session is active";
// close a session
$session->close(); // destroys all data registered to a session $session->destroy();
}
Trong đoạn mã trên, chúng ta nhận được thành phần ứng dụng phiên, mở một phiên, kiểm tra xem nó có đang hoạt động hay không, đóng phiên và cuối cùng là hủy nó.
Step 2 - Loại http://localhost:8080/index.php?r=site/open-and-close-session trong thanh địa chỉ của trình duyệt web, bạn sẽ thấy như sau.
Để truy cập các biến phiên, bạn có thể sử dụng set() và get() các phương pháp.
Step 3 - Thêm một actionAccessSession phương pháp cho SiteController.
public function actionAccessSession() {
$session = Yii::$app->session;
// set a session variable
$session->set('language', 'ru-RU'); // get a session variable $language = $session->get('language'); var_dump($language);
// remove a session variable
$session->remove('language'); // check if a session variable exists if (!$session->has('language')) echo "language is not set";
$session['captcha'] = [ 'value' => 'aSBS23', 'lifetime' => 7200, ]; var_dump($session['captcha']);
}
Step 4 - Đi tới http://localhost:8080/index.php?r=site/access-session, bạn sẽ thấy như sau.