Hướng dẫn php sessions



Session là một cách để lưu trữ thông tin (trong các biến) được sử dụng trên nhiều trang.

Không giống như một cookie, thông tin được lưu trữ trên server, chứ không được lưu trữ trên máy tính người dùng.


Nội dung chính

  • Session trong PHP là gì?
  • Bắt đầu một session trong PHP
  • Đọc giá trị biến session trong PHP
  • Thay đổi giá trị biến session trong PHP
  • Xóa biến session trong PHP
    • Session hoạt động như thế nào? Làm sao để biết nó là tôi?

Khi bạn làm việc với một ứng dụng, bạn mở nó, thực hiện một số thay đổi, và sau đó bạn đóng nó lại. Điều này giống như một phiên (session). Máy tính biết bạn là ai. Nó biết khi bạn bắt đầu ứng dụng và khi bạn kết thúc. Nhưng trên internet có một vấn đề: máy chủ web không biết bạn là ai hoặc bạn làm gì, vì địa chỉ HTTP không duy trì trạng thái.

Các biến session giải quyết vấn đề này bằng cách lưu trữ thông tin người dùng được sử dụng trên nhiều trang (ví dụ: tên người dùng, sở thích, v.v.). Theo mặc định, các biến session tồn tại cho đến khi người dùng đóng trình duyệt.

Vì thế; Biến phiên giữ thông tin về một người dùng duy nhất và có sẵn cho tất cả các trang trong một ứng dụng.



Bắt đầu một session trong PHP

Hàm session_start() được sử dụng để bắt đầu một session.

Biến session được đặt bằng biến toàn cục PHP: $_SESSION.

Bây giờ, hãy tạo một trang mới có tên là "session-trong-php-1.php". Trong trang này, chúng tôi bắt đầu một PHP session mới và thiết lập một số biến session:

File: "session-trong-php-1.php"

<?php
// bắt đầu session
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// Tạo biến session
$_SESSION["user_id"] = "TT123456";
$_SESSION["username"] = "david123";
echo "Các biến session đã được tạo.";
?>

</body>
</html>

Kết quả:

Các biến session đã được tạo.

Xem kết quả ở tab mới.

Chú ý: Hàm Cácsession_start() phải đặt TRƯỚC thẻ <html>.


Đọc giá trị biến session trong PHP

Tiếp theo, chúng ta tạo một trang khác gọi là "session-trong-php-2.php". Từ trang này, chúng ta sẽ truy cập thông tin session mà chúng ta đã tạo ra trên trang đầu tiên ("session-trong-php-1.php").

Lưu ý rằng các biến session không được chuyển riêng lẻ đến từng trang mới, thay vào đó chúng được truy cập từ session mà chúng ta khai báo ở đầu mỗi trang (session_start()) và các giá trị biến session được lưu trữ trong biến toàn cầu $_SESSION:

File: "session-trong-php-2.php"

<?php
// bắt đầu session
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// hiển thị các biến session được tạo ở ví dụ trước
echo "user_id là: " . $_SESSION["user_id"] . "<br>";
echo "username là: " . $_SESSION["username"];
?>

</body>
</html>

Kết quả:

user_id là: TT123456
username là: david123

Xem kết quả ở tab mới.

Để in tất cả các biến session, sử dụng lệnh sau:

<?php
print_r($_SESSION);
?>



Thay đổi giá trị biến session trong PHP

Để thay đổi biến session, chỉ ghi đè lên biến đó:

File: "session-trong-php-3.php"

<?php
// bắt đầu session
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// thay đổi biến session được tạo ở ví dụ trước
$_SESSION["username"] = "viettuts.vn";
print_r($_SESSION);
?>

</body>
</html>

Kết quả:

Array ( [user_id] => TT123456 [username] => viettuts.vn )

Xem kết quả ở tab mới.


Xóa biến session trong PHP

Để xóa tất cả các biến session toàn cầu hãy sử dụng session_unset() và session_destroy():

File: "session-trong-php-4.php"

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// xóa tất cả các biến session
session_unset(); 
session_destroy(); 
print_r($_SESSION);
?>

</body>
</html>

Kết quả:

Xem kết quả ở tab mới.

Session hoạt động như thế nào? Làm sao để biết nó là tôi?

Hầu hết các session đều thiết lập một user-key trên máy tính của người dùng giống như sau: 765487cf34ert8dede5a562e4f3a7e12. Sau đó, khi một phiên được mở trên một trang khác, nó sẽ quét máy tính cho một user-key. Nếu phù hợp, nó sẽ truy cập vào phiên đó, nếu không, nó sẽ bắt đầu một phiên mới.



Phiên là một chu trình người dùng gửi yêu cầu lên server và được server hồi đáp. Sau khi server hồi đáp trả lại trang nó sẽ đóng kết nối. Vậy nên những phiên làm việc sau đó web server không thể kết nối các phiên làm việc với nhau để phục vụ công việc nào đó.

  • Session dùng theo dõi và kết nối giữa các phiên làm việc của người dùng
  • Thông tin của session được lưu trữ trong mảng hệ thống $_SESSION
  • Session dùng để tạo các ứng dụng giỏ hàng, đăng nhập

THAO TÁC VỚI SESSION

1.Tạo Session

<?php
sesstion_start();
$_SESSION['status_login'] = true;
?>

2. Cách lấy giá trị SESSION

<?php
ob_start();
if($_SESSION['status_login']!=true){
// Chuyển hướng người dùng đến trang login nếu tài khoản chưa đăng nhập
header("LOCATION:login.php");
}
?>

3. Cách hủy Session

<?php
session_start();
// Xóa đi một biến Session
unset($_SESSION['status_login'])
//Xóa toàn bộ Session
session_destroy();
?>

GHI NHỚ

  • Session dùng kết nối các phiên làm việc của người dùng
  • Session được sử dụng xây dựng ứng dụng giỏ hàng, đăng nhập, đăng ký
  • Sử dụng session qua các thao tác thêm, sửa, xóa session

BÀI TẬP

1.Xây dựng ứng dụng lưu phiên đăng nhập người dùng

2.Xây dựng ứng dụng lưu thông tin giỏ hàng

Url Link

http://hocweb123.com/huong-dan-lam-viec-voi-session-trong-php.html