PHP: SESSION trong PHP

SESSION PHP là gì?

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ó. Điều này giống như một phiên. Máy tính biết bạn là ai. Nó biết khi nào bạn bắt đầu ứng dụng và khi nào 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 để sử dụng trên nhiều trang (ví dụ: tên người dùng, màu yêu thích, v.v.). Theo mặc định, các biến session kéo dài cho đến khi người dùng đóng trình duyệt.

Vì thế, các biến session 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.

Mẹo: Nếu bạn cần một bộ nhớ lâu dài, bạn có thể muốn lưu trữ dữ liệu trong cơ sở dữ liệu.

Bắt đầu một phiên PHP

Một phiên được bắt đầu với hàm session_start().

Các biến session được thiết lập 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 “demo_session1.php”. Trong trang này, chúng ta bắt đầu một phiên PHP mới và đặt một số biến session:

<?php

// Bắt đầu phiên

session_start();

?>

<

!DOCTYPE

html

>

<

html

>

<

body

>

<?php

// Thiết lập các biến session

$_SESSION

[

"favcolor"

] =

"green"

;

$_SESSION

[

"favanimal"

] =

"cat"

;

echo

"Các biến session đã được thiết lập."

;

?>

<

/body

>

<

/html

>

Lưu ý: Hàm session_start() phải nằm ở dòng đầu tiên trong tài liệu của bạn và nằm trước bất kỳ thẻ HTML nào.

 

Nhận giá trị biến session PHP

Tiếp theo, chúng ta tạo một trang khác có tên “demo_session2.php”. Từ trang này, chúng ta sẽ truy cập thông tin session mà chúng ta đã thiết lập ở trang đầu tiên (“demo_session1.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 xuất từ ​​phiên mà chúng ta mở ở đầu mỗi trang ( session_start()).

Cũng lưu ý rằng tất cả các giá trị của biến session được lưu trữ trong biến mảng global $ _SESSION:

<?php

session_start();

?>

<

!DOCTYPE

html

>

<

html

>

<

body

>

<?php

// In ra các biến session đã được thiết lập ở trang trước:

echo

"Màu yêu thích là "

.

$_SESSION

[

"favcolor"

] .

".<br>"

;

echo

"Con vật yêu thích là "

.

$_SESSION

[

"favanimal"

] .

"."

;

?>

<

/body

>

<

/html

>

Một cách khác để hiển thị tất cả các giá trị biến session cho phiên người dùng là chạy đoạn mã sau:

<?php

session_start();

?>

<

!DOCTYPE

html

>

<

html

>

<

body

>

<?php

print_r(

$_SESSION

);

?>

<

/body

>

<

/html

>

Lưu ý cách thức hoạt động của phiên:

Hầu hết các phiên đặt khóa người dùng trên máy tính của người dùng trô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 để tìm khóa người dùng. Nếu có một kết quả 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.

Sửa đổi một biến session PHP

Để thay đổi một biến session, chỉ cần ghi đè lên đó:

<?php

session_start();

?>

<

!DOCTYPE

html

>

<

html

>

<

body

>

<?php

// để thay đổi giá trị biến session, đơn giản là gán cho nó một giá trị khác

$_SESSION

[

"favcolor"

] =

"yellow"

; print_r(

$_SESSION

);

?>

<

/body

>

<

/html

>

Hủy một phiên PHP

Để xóa tất cả các biến session global và hủy phiên, hãy sử dụng session_unset() và session_destroy():

<?php

session_start();

?>

<

!DOCTYPE

html

>

<

html

>

<

body

>

<?php

// Xóa tất cả các biến session

session_unset();

// Hủy phiên

session_destroy();

echo

"Tất cả các biến session bây giờ đã bị xóa, và phiên cũng bị hủy."

?>

<

/body

>

<

/html

>