PHP hủy phiên theo id

PHP có chức năng cốt lõi session_destroy[] để xóa tất cả các giá trị phiên. Đây là một hàm không đối số đơn giản trả về giá trị boolean true hoặc false

ID phiên PHP được lưu trữ trong cookie theo mặc định. Nói chung, tệp cookie phiên đó có tên là PHPSESSID. Hàm session_destroy sẽ không bỏ đặt id phiên trong cookie

Để hủy phiên 'hoàn toàn', ID phiên cũng phải được bỏ đặt

Ví dụ nhanh này sử dụng session_destroy[] để hủy phiên. Nó sử dụng phương thức set_cookie[] để hủy toàn bộ bằng cách hết hạn ID phiên PHP

Trong hướng dẫn này, bạn sẽ học cách lưu trữ tạm thời một số dữ liệu nhất định trên máy chủ bằng cách sử dụng phiên PHP

Phiên là gì

Mặc dù bạn có thể lưu trữ dữ liệu bằng cookie nhưng nó có một số vấn đề về bảo mật. Vì cookie được lưu trữ trên máy tính của người dùng nên kẻ tấn công có thể dễ dàng sửa đổi nội dung cookie để chèn dữ liệu có thể gây hại vào ứng dụng của bạn, điều này có thể làm hỏng ứng dụng của bạn

Ngoài ra, mỗi khi trình duyệt yêu cầu một URL đến máy chủ, tất cả dữ liệu cookie cho một trang web sẽ tự động được gửi đến máy chủ trong yêu cầu. Điều đó có nghĩa là nếu bạn đã lưu trữ 5 cookie trên hệ thống của người dùng, mỗi cookie có kích thước 4KB, trình duyệt cần tải lên 20KB dữ liệu mỗi khi người dùng xem một trang, điều này có thể ảnh hưởng đến hiệu suất trang web của bạn

Bạn có thể giải quyết cả hai vấn đề này bằng cách sử dụng phiên PHP. Phiên PHP lưu trữ dữ liệu trên máy chủ thay vì máy tính của người dùng. Trong môi trường dựa trên phiên, mọi người dùng được xác định thông qua một số duy nhất được gọi là mã định danh phiên hoặc SID. ID phiên duy nhất này được sử dụng để liên kết từng người dùng với thông tin của riêng họ trên máy chủ như email, bài đăng, v.v.

Mẹo. ID phiên được tạo ngẫu nhiên bởi công cụ PHP, gần như không thể đoán được. Hơn nữa, vì dữ liệu phiên được lưu trữ trên máy chủ nên nó không phải được gửi với mọi yêu cầu của trình duyệt

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

Trước khi bạn có thể lưu trữ bất kỳ thông tin nào trong các biến phiên, trước tiên bạn phải khởi động phiên. Để bắt đầu một phiên làm việc mới, chỉ cần gọi hàm PHP

20. Nó sẽ tạo một phiên mới và tạo ID phiên duy nhất cho người dùng

Mã PHP trong ví dụ bên dưới chỉ đơn giản là bắt đầu một phiên làm việc mới

Đầu tiên, hàm

20 kiểm tra xem phiên đã tồn tại chưa bằng cách tìm kiếm sự hiện diện của ID phiên. Nếu nó tìm thấy một, tôi. e. nếu phiên đã bắt đầu, nó sẽ thiết lập các biến phiên và nếu không, nó sẽ bắt đầu một phiên mới bằng cách tạo ID phiên mới

Ghi chú. Bạn phải gọi hàm

20 ở đầu trang i. e. trước bất kỳ đầu ra nào được tạo bởi tập lệnh của bạn trong trình duyệt, giống như cách bạn thực hiện khi đặt cookie bằng chức năng 
23

Lưu trữ và truy cập dữ liệu phiên

Bạn có thể lưu trữ tất cả dữ liệu phiên của mình dưới dạng các cặp khóa-giá trị trong mảng siêu toàn cục

24. Dữ liệu được lưu trữ có thể được truy cập trong suốt thời gian tồn tại của phiên. Hãy xem xét tập lệnh sau, tập lệnh này tạo phiên mới và đăng ký hai biến phiên

Để truy cập dữ liệu phiên mà chúng tôi đã đặt trong ví dụ trước từ bất kỳ trang nào khác trên cùng một miền web — chỉ cần tạo lại phiên bằng cách gọi

20 rồi chuyển khóa tương ứng vào mảng kết hợp 
1

Mã PHP trong ví dụ trên tạo ra đầu ra sau

Ghi chú. Để truy cập dữ liệu phiên trong cùng một trang, không cần phải tạo lại phiên vì nó đã được bắt đầu ở đầu trang

Phá hủy một phiên

Nếu bạn muốn xóa dữ liệu phiên nhất định, chỉ cần bỏ đặt khóa tương ứng của mảng kết hợp

1, như minh họa trong ví dụ sau

Tuy nhiên, để hủy hoàn toàn một phiên, chỉ cần gọi hàm

3. Hàm này không cần bất kỳ đối số nào và một lệnh gọi sẽ hủy tất cả dữ liệu phiên

Ghi chú. Trước khi hủy một phiên bằng hàm

3, trước tiên bạn cần tạo lại môi trường phiên nếu nó chưa có ở đó bằng cách sử dụng hàm 
20 để có thứ gì đó cần hủy

Mỗi phiên PHP có một giá trị thời gian chờ — thời lượng, được tính bằng giây — xác định thời gian một phiên sẽ tồn tại trong trường hợp không có bất kỳ hoạt động nào của người dùng. Bạn có thể điều chỉnh khoảng thời gian chờ này bằng cách thay đổi giá trị của biến

6 trong tệp cấu hình PHP [
7]

Vì các ứng dụng điều khiển HTTP là không trạng thái, các phiên cung cấp một cách để lưu trữ thông tin về người dùng qua nhiều yêu cầu. Thông tin người dùng đó thường được đặt trong một cửa hàng/phụ trợ liên tục có thể được truy cập từ các yêu cầu tiếp theo

Laravel cung cấp nhiều phụ trợ phiên được truy cập thông qua API thống nhất, rõ ràng. Hỗ trợ cho các chương trình phụ trợ phổ biến như Memcached, Redis và cơ sở dữ liệu được bao gồm

Cấu hình

Tệp cấu hình phiên của ứng dụng của bạn được lưu trữ tại

12. Hãy chắc chắn xem xét các tùy chọn có sẵn cho bạn trong tệp này. Theo mặc định, Laravel được cấu hình để sử dụng trình điều khiển phiên 
13, trình điều khiển này sẽ hoạt động tốt cho nhiều ứng dụng. Nếu ứng dụng của bạn sẽ được cân bằng tải trên nhiều máy chủ web, thì bạn nên chọn một kho lưu trữ tập trung mà tất cả các máy chủ đều có thể truy cập, chẳng hạn như Redis hoặc cơ sở dữ liệu

Tùy chọn cấu hình phiên

14 xác định nơi dữ liệu phiên sẽ được lưu trữ cho mỗi yêu cầu. Laravel xuất xưởng với một số trình điều khiển tuyệt vời

  • 13 - phiên được lưu trữ trong 
    16
  • 17 - phiên được lưu trữ trong cookie được mã hóa, an toàn
  • 18 - phiên được lưu trữ trong cơ sở dữ liệu quan hệ
  • 19 / 
    90 - các phiên được lưu trữ tại một trong những cửa hàng dựa trên bộ nhớ cache nhanh này
  • 91 - phiên được lưu trữ trong AWS DynamoDB
  • 92 - các phiên được lưu trữ trong một mảng PHP và sẽ không được duy trì

Lưu ý
Trình điều khiển mảng chủ yếu được sử dụng trong quá trình thử nghiệm và ngăn không cho dữ liệu được lưu trữ trong phiên được duy trì.

Điều kiện tiên quyết của trình điều khiển

cơ sở dữ liệu

Khi sử dụng trình điều khiển phiên

18, bạn sẽ cần tạo một bảng để chứa các bản ghi phiên. Ví dụ khai báo 
94 cho bảng có thể được tìm thấy bên dưới

4

Bạn có thể sử dụng lệnh Artisan

95 để tạo quá trình di chuyển này. Để tìm hiểu thêm về di chuyển cơ sở dữ liệu, bạn có thể tham khảo tài liệu di chuyển đầy đủ

làm lại

Trước khi sử dụng phiên Redis với Laravel, bạn cần cài đặt tiện ích mở rộng PhpRedis PHP qua PECL hoặc cài đặt gói

96 [~1. 0] qua Nhà soạn nhạc. Để biết thêm thông tin về cấu hình Redis, tham khảo tài liệu Redis của Laravel

Lưu ý
Trong tệp cấu hình

97, tùy chọn 
98 có thể được sử dụng để chỉ định kết nối Redis nào được phiên sử dụng. 

Tương tác với phiên

Truy xuất dữ liệu

Có hai cách chính để làm việc với dữ liệu phiên trong Laravel. trình trợ giúp toàn cầu

97 và thông qua phiên bản 
00. Đầu tiên, hãy xem xét việc truy cập phiên thông qua một phiên bản 
00, có thể được gợi ý kiểu trên một phương thức đóng tuyến hoặc bộ điều khiển. Hãy nhớ rằng, các phụ thuộc phương thức của bộ điều khiển được tự động đưa vào thông qua bộ chứa dịch vụ của Laravel

2

Khi bạn truy xuất một mục từ phiên, bạn cũng có thể chuyển một giá trị mặc định làm đối số thứ hai cho phương thức

02. Giá trị mặc định này sẽ được trả về nếu khóa được chỉ định không tồn tại trong phiên. Nếu bạn chuyển một bao đóng làm giá trị mặc định cho phương thức 
02 và khóa được yêu cầu không tồn tại, bao đóng sẽ được thực thi và kết quả của nó được trả về

1

Trình trợ giúp phiên toàn cầu

Bạn cũng có thể sử dụng hàm PHP

97 toàn cầu để truy xuất và lưu trữ dữ liệu trong phiên. Khi trình trợ giúp 
97 được gọi với một đối số chuỗi, nó sẽ trả về giá trị của khóa phiên đó. Khi người trợ giúp được gọi với một mảng các cặp khóa/giá trị, các giá trị đó sẽ được lưu trữ trong phiên

9

Lưu ý
Có rất ít sự khác biệt thực tế giữa việc sử dụng phiên thông qua phiên bản yêu cầu HTTP so với việc sử dụng trình trợ giúp

97 toàn cầu. Cả hai phương pháp đều có thể kiểm tra được thông qua phương pháp 
07 có sẵn trong tất cả các trường hợp thử nghiệm của bạn. 

Truy xuất tất cả dữ liệu phiên

Nếu bạn muốn truy xuất tất cả dữ liệu trong phiên, bạn có thể sử dụng phương pháp

08

0

Xác định xem một mục có tồn tại trong phiên không

Để xác định xem một mục có trong phiên hay không, bạn có thể sử dụng phương pháp

09. Phương thức 
09 trả về 
51 nếu mục hiện diện và không phải là 
52

5

Để xác định xem một mục có xuất hiện trong phiên hay không, ngay cả khi giá trị của nó là

52, bạn có thể sử dụng phương pháp 
54

0

Để xác định xem một mục không có trong phiên, bạn có thể sử dụng phương pháp

55. Phương thức 
55 trả về 
51 nếu không có mặt hàng

4

Lưu trữ dữ liệu

Để lưu trữ dữ liệu trong phiên, thông thường bạn sẽ sử dụng phương thức

58 của phiên bản yêu cầu hoặc trình trợ giúp toàn cầu 
97

7

Đẩy vào các giá trị phiên mảng

Phương thức

00 có thể được sử dụng để đẩy một giá trị mới vào một giá trị phiên là một mảng. Ví dụ: nếu khóa 
01 chứa một mảng tên nhóm, bạn có thể đẩy một giá trị mới vào mảng như vậy

0

Truy xuất và xóa một mục

Phương thức

02 sẽ truy xuất và xóa một mục khỏi phiên trong một câu lệnh

20

Tăng và giảm giá trị phiên

Nếu dữ liệu phiên của bạn chứa một số nguyên mà bạn muốn tăng hoặc giảm, bạn có thể sử dụng các phương thức

03 và 
04

21

Dữ liệu flash

Đôi khi bạn có thể muốn lưu trữ các mục trong phiên cho yêu cầu tiếp theo. Bạn có thể làm như vậy bằng cách sử dụng phương pháp

05. Dữ liệu được lưu trữ trong phiên sử dụng phương pháp này sẽ có sẵn ngay lập tức và trong yêu cầu HTTP tiếp theo. Sau yêu cầu HTTP tiếp theo, dữ liệu được flash sẽ bị xóa. Dữ liệu flash chủ yếu hữu ích cho các thông báo trạng thái tồn tại trong thời gian ngắn

22

Nếu bạn cần duy trì dữ liệu flash của mình cho một số yêu cầu, bạn có thể sử dụng phương pháp

06, phương pháp này sẽ giữ tất cả dữ liệu flash cho một yêu cầu bổ sung. Nếu bạn chỉ cần giữ dữ liệu flash cụ thể, bạn có thể sử dụng phương pháp 
07

23

Để duy trì dữ liệu flash của bạn chỉ cho yêu cầu hiện tại, bạn có thể sử dụng phương pháp

08

24

Xóa dữ liệu

Phương pháp

09 sẽ xóa một phần dữ liệu khỏi phiên. Nếu bạn muốn xóa tất cả dữ liệu khỏi phiên, bạn có thể sử dụng phương pháp 
40

25

Tạo lại ID phiên

Việc tạo lại ID phiên thường được thực hiện để ngăn người dùng độc hại khai thác cuộc tấn công cố định phiên trên ứng dụng của bạn

Laravel tự động tạo lại ID phiên trong quá trình xác thực nếu bạn đang sử dụng một trong các bộ khởi động ứng dụng Laravel hoặc Laravel Fortify;

26

Nếu bạn cần tạo lại ID phiên và xóa tất cả dữ liệu khỏi phiên trong một câu lệnh, bạn có thể sử dụng phương pháp

42

27

Chặn phiên

Cảnh báo
Để sử dụng tính năng chặn phiên, ứng dụng của bạn phải sử dụng trình điều khiển bộ đệm hỗ trợ khóa nguyên tử. Hiện tại, các trình điều khiển bộ nhớ cache đó bao gồm trình điều khiển

19, 
91, 
90 và 
18. Ngoài ra, bạn không được sử dụng trình điều khiển phiên 
17. 

Theo mặc định, Laravel cho phép các yêu cầu sử dụng cùng một phiên thực hiện đồng thời. Vì vậy, ví dụ: nếu bạn sử dụng thư viện JavaScript HTTP để thực hiện hai yêu cầu HTTP cho ứng dụng của mình, thì cả hai yêu cầu đó sẽ thực thi cùng một lúc. Đối với nhiều ứng dụng, đây không phải là vấn đề;

Để giảm thiểu điều này, Laravel cung cấp chức năng cho phép bạn giới hạn các yêu cầu đồng thời cho một phiên nhất định. Để bắt đầu, bạn có thể chỉ cần xâu chuỗi phương thức

48 vào định nghĩa tuyến đường của mình. Trong ví dụ này, một yêu cầu đến điểm cuối 
49 sẽ nhận được khóa phiên. Trong khi khóa này đang được giữ, mọi yêu cầu gửi đến các điểm cuối 
49 hoặc 
71 có chung ID phiên sẽ đợi yêu cầu đầu tiên thực hiện xong trước khi tiếp tục thực hiện.

28

Phương thức

48 chấp nhận hai đối số tùy chọn. Đối số đầu tiên được phương thức 
48 chấp nhận là số giây tối đa mà khóa phiên sẽ được giữ trước khi được giải phóng. Tất nhiên, nếu yêu cầu kết thúc thực thi trước thời điểm này, khóa sẽ được giải phóng sớm hơn

Đối số thứ hai được phương thức

48 chấp nhận là số giây mà một yêu cầu phải đợi trong khi cố gắng lấy khóa phiên. Một 
75 sẽ bị ném nếu yêu cầu không thể có được khóa phiên trong số giây đã cho

Nếu cả hai đối số này đều không được thông qua, khóa sẽ được lấy trong tối đa 10 giây và các yêu cầu sẽ đợi tối đa 10 giây trong khi cố gắng lấy khóa

29

Thêm trình điều khiển phiên tùy chỉnh

Triển khai trình điều khiển

Nếu không có trình điều khiển phiên hiện có nào phù hợp với nhu cầu của ứng dụng của bạn, thì Laravel có thể viết trình xử lý phiên của riêng bạn. Trình điều khiển phiên tùy chỉnh của bạn nên triển khai

76 tích hợp sẵn của PHP. Giao diện này chỉ chứa một vài phương thức đơn giản. Triển khai MongoDB sơ khai trông giống như sau

10

Lưu ý
Laravel không cung cấp thư mục chứa tiện ích mở rộng của bạn. Bạn có thể tự do đặt chúng ở bất cứ đâu bạn thích. Trong ví dụ này, chúng tôi đã tạo một thư mục

77 để chứa 
78. 

Vì mục đích của các phương pháp này không dễ hiểu, nên hãy nhanh chóng đề cập đến chức năng của từng phương pháp

  • Phương pháp
    79 thường được sử dụng trong các hệ thống lưu trữ phiên dựa trên tệp. Vì Laravel cung cấp trình điều khiển phiên 
    13, bạn sẽ hiếm khi cần đặt bất cứ thứ gì vào phương thức này. Bạn chỉ cần để trống phương thức này
  • Phương pháp
    01, giống như phương pháp 
    79, cũng thường có thể bị bỏ qua. Đối với hầu hết các trình điều khiển, nó không cần thiết
  • Phương thức
    03 sẽ trả về phiên bản chuỗi của dữ liệu phiên được liên kết với 
    04 đã cho. Không cần thực hiện bất kỳ tuần tự hóa hoặc mã hóa nào khác khi truy xuất hoặc lưu trữ dữ liệu phiên trong trình điều khiển của bạn, vì Laravel sẽ thực hiện tuần tự hóa cho bạn
  • Phương thức
    05 sẽ ghi chuỗi 
    06 đã cho được liên kết với 
    04 vào một số hệ thống lưu trữ liên tục, chẳng hạn như MongoDB hoặc hệ thống lưu trữ khác mà bạn chọn. Một lần nữa, bạn không nên thực hiện bất kỳ tuần tự hóa nào - Laravel sẽ xử lý việc đó cho bạn
  • Phương pháp
    08 sẽ xóa dữ liệu được liên kết với 
    04 khỏi bộ lưu trữ liên tục
  • Phương pháp
    200 sẽ hủy tất cả dữ liệu phiên cũ hơn 
    201 đã cho, đây là dấu thời gian UNIX. Đối với các hệ thống tự hết hạn như Memcached và Redis, phương thức này có thể để trống

Đăng ký tài xế

Khi trình điều khiển của bạn đã được triển khai, bạn đã sẵn sàng để đăng ký nó với Laravel. Để thêm các trình điều khiển bổ sung vào phụ trợ phiên của Laravel, bạn có thể sử dụng phương pháp

202 được cung cấp bởi mặt tiền 
203. Bạn nên gọi phương thức 
202 từ phương thức 
205 của nhà cung cấp dịch vụ. Bạn có thể làm điều này từ 
206 hiện có hoặc tạo một nhà cung cấp hoàn toàn mới

11

Khi trình điều khiển phiên đã được đăng ký, bạn có thể sử dụng trình điều khiển

207 trong tệp cấu hình 
12 của mình

Làm cách nào để xóa giá trị phiên trong PHP?

session_unset chỉ xóa phiên để sử dụng . Phiên vẫn còn trên máy tính của người dùng. Lưu ý rằng bằng cách sử dụng session_unset, biến vẫn tồn tại. session_unset chỉ cần xóa tất cả các biến phiên.

Làm cách nào để lấy id phiên trong PHP?

Trước khi nhận id phiên, bạn cần bắt đầu phiên và điều đó được thực hiện bằng cách sử dụng. hàm session_start[]. Bây giờ bạn đã bắt đầu một phiên, bạn có thể lấy id phiên bằng cách sử dụng. session_id[] .

$_ phiên trong PHP là gì?

PHP $_SESSION là một mảng kết hợp chứa tất cả các biến phiên . Nó được sử dụng để đặt và nhận các giá trị biến phiên. Ví dụ. Lưu trữ thông tin.

Làm cách nào để tạo lại id phiên trong PHP?

session_regenerate_id[] sẽ thay thế id phiên hiện tại bằng id phiên mới và giữ nguyên thông tin phiên hiện tại. Khi phiên. use_trans_sid được bật, đầu ra phải được bắt đầu sau lệnh gọi session_regenerate_id[]. Mặt khác, ID phiên cũ được sử dụng.

Chủ Đề