CodeIgniter - Quản lý phiên
Khi xây dựng trang web, chúng tôi thường cần theo dõi hoạt động và trạng thái của người dùng và vì mục đích này, chúng tôi phải sử dụng session. CodeIgniter có lớp phiên cho mục đích này.
Khởi tạo một phiên
Dữ liệu phiên có sẵn trên toàn cầu thông qua trang web nhưng để sử dụng những dữ liệu đó, trước tiên chúng ta cần khởi chạy phiên. Chúng ta có thể làm điều đó bằng cách thực hiện dòng sau trong hàm tạo.
$this->load->library('session');
Sau khi tải thư viện phiên, bạn chỉ cần sử dụng đối tượng phiên như hình dưới đây.
$this->session
Thêm dữ liệu phiên
Trong PHP, chúng tôi chỉ sử dụng $_SESSION mảng để thiết lập bất kỳ dữ liệu nào trong phiên như hình dưới đây.
$_SESSION[‘key’] = value;
Ở đâu 'key'là khóa của mảng và value được gán ở phía bên phải của dấu bằng.
Điều tương tự có thể được thực hiện trong CodeIgniter như hình dưới đây.
$this->session->set_userdata('some_name', 'some_value');
set_userdata()hàm nhận hai đối số. Đối số đầu tiên,some_name, là tên của biến phiên, theo đó, some_value sẽ được lưu trữ.
set_userdata() Hàm cũng hỗ trợ một cú pháp khác trong đó bạn có thể truyền mảng để lưu trữ các giá trị như hình dưới đây.
$newdata = array(
'username' => 'johndoe',
'email' => '[email protected]',
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
Xóa dữ liệu phiên
Trong PHP, chúng ta có thể xóa dữ liệu được lưu trữ trong phiên bằng cách sử dụng unset() chức năng như hình dưới đây.
unset($_SESSION[‘some_name’]);
Việc xóa dữ liệu phiên trong CodeIgniter rất đơn giản như hình dưới đây. Phiên bản dưới đây củaunset_userdata() hàm sẽ chỉ xóa một biến khỏi phiên.
$this->session->unset_userdata('some_name');
Nếu bạn muốn xóa nhiều giá trị hơn khỏi phiên hoặc xóa toàn bộ mảng, bạn có thể sử dụng phiên bản bên dưới của unset_userdata() chức năng.
$this->session->unset_userdata($array_items);
Tìm nạp dữ liệu phiên
Sau khi thiết lập dữ liệu trong phiên, chúng ta cũng có thể lấy dữ liệu đó như hình dưới đây. Userdata()chức năng sẽ được sử dụng cho mục đích này. Hàm này sẽ trả vềNULL nếu dữ liệu bạn đang cố gắng truy cập không có sẵn.
$name = $this->session->userdata('name');
Thí dụ
Tạo một lớp điều khiển được gọi là Session_controller.php và lưu nó vào application/controller/Session_controller.php.
<?php
class Session_controller extends CI_Controller {
public function index() {
//loading session library
$this->load->library('session');
//adding data to session
$this->session->set_userdata('name','virat');
$this->load->view('session_view');
}
public function unset_session_data() {
//loading session library
$this->load->library('session');
//removing session data
$this->session->unset_userdata('name');
$this->load->view('session_view');
}
}
?>
Tạo một tệp dạng xem có tên session_view.php và lưu nó vào application/views/session_view.php
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>CodeIgniter Session Example</title>
</head>
<body>
Welcome <?php echo $this->session->userdata('name'); ?>
<br>
<a href = 'http://localhost:85/CodeIgniter-3.0.1/CodeIgniter3.0.1/index.php/sessionex/unset'>
Click Here</a> to unset session data.
</body>
</html>
Thực hiện các thay đổi trong routes.php trong tập tin application/config/routes.php và thêm dòng sau vào cuối tệp.
$route['sessionex'] = 'Session_Controller';
Thực hiện ví dụ trên bằng cách sử dụng địa chỉ sau. Thay thếyoursite.com với URL của trang web của bạn.
http://yoursite.com/index.php/sessionex