Phiên php có thể lớn đến mức nào?
Xử lý phiên là một khái niệm quan trọng trong PHP cho phép thông tin người dùng được duy trì trên tất cả các trang của trang web hoặc ứng dụng. Trong bài đăng này, bạn sẽ tìm hiểu những điều cơ bản về xử lý phiên trong PHP Show
Chúng tôi sẽ bắt đầu với phần giải thích về cách phiên hoạt động và cách chúng liên quan đến cookie. Sau đó, chúng ta sẽ xem xét một vài đoạn mã minh họa cách làm việc với các phiên. Bạn sẽ tìm hiểu cách tạo và hủy phiên cũng như cách thay đổi biến phiên Cookie so với. Biến phiênBạn không chắc liệu mình có cần cookie hoặc biến phiên không? . Cookies là một cách để lưu trữ dữ liệu về người dùng trên máy tính của người dùng. Biến phiên thường được sử dụng trong các ứng dụng cần theo dõi hoạt động của người dùng. Cookie thường được sử dụng trong các ứng dụng cần lưu trữ thông tin về người dùng cho một trang web Bạn cũng có thể tìm hiểu về các biến phiên trong bài viết của tôi về cách sử dụng cookie trong PHP
Phiên trong PHP là gì?Phiên là một cơ chế để duy trì thông tin trên các trang web khác nhau nhằm xác định người dùng khi họ điều hướng một trang web hoặc ứng dụng. Bạn đang tự hỏi tại sao các phiên lại cần thiết cho một trang web? Giao thức HTTP là một giao thức không trạng thái, có nghĩa là không có cách nào máy chủ có thể nhớ một người dùng cụ thể giữa nhiều yêu cầu. Ví dụ, khi bạn truy cập một trang web, máy chủ chỉ có nhiệm vụ cung cấp nội dung của trang yêu cầu. Vì vậy, khi bạn truy cập các trang khác của cùng một trang web, máy chủ web sẽ diễn giải từng yêu cầu một cách riêng biệt, như thể chúng không liên quan đến nhau. Không có cách nào để máy chủ biết rằng mỗi yêu cầu bắt nguồn từ cùng một người dùng Sơ đồ sau mô tả tóm tắt giao thức HTTP Trong mô hình này, nếu bạn muốn hiển thị thông tin cụ thể của người dùng, bạn phải xác thực người dùng trong mỗi yêu cầu. Hãy tưởng tượng nếu bạn phải nhập tên người dùng và mật khẩu của mình trên mọi trang hiển thị thông tin hồ sơ của bạn. Vâng, nó sẽ cồng kềnh và không thực tế chút nào, và đó là lý do tại sao các phiên ra đời Phiên cho phép bạn chia sẻ thông tin trên các trang khác nhau của một trang web hoặc ứng dụng—do đó, phiên này giúp duy trì trạng thái. Điều này cho phép máy chủ biết rằng tất cả các yêu cầu bắt nguồn từ cùng một người dùng, do đó cho phép trang web hiển thị thông tin và tùy chọn cụ thể của người dùng Luồng đăng nhập với phiên và cookieHãy xem nhanh quy trình đăng nhập phổ biến cho một trang web để hiểu điều gì xảy ra đằng sau hậu trường
Theo cách này, dữ liệu người dùng được lưu giữ qua nhiều yêu cầu và người dùng được duy trì đăng nhập trong suốt phiên Sơ đồ sau mô tả cách thức hoạt động của giao thức HTTP với các phiên Bây giờ bạn đã xem phần giới thiệu ngắn gọn về cách hoạt động của các phiên, chúng ta sẽ tạo một vài ví dụ thực tế để minh họa cách tạo và thao tác các biến phiên Cách bắt đầu một phiênTrong phần này, chúng ta sẽ thảo luận về cách bắt đầu một phiên làm việc trong PHP Bất cứ khi nào bạn muốn xử lý các biến phiên, bạn cần đảm bảo rằng một phiên đã được bắt đầu. Có một số cách bạn có thể bắt đầu một phiên làm việc trong PHP Sử dụng Hàm php_value session.auto_start 15Đây là phương pháp mà bạn sẽ thấy thường xuyên nhất, trong đó một phiên được bắt đầu bởi hàm php_value session.auto_start 15________số 8 Điều quan trọng là hàm php_value session.auto_start 15 phải được gọi ở đầu tập lệnh, trước khi bất kỳ đầu ra nào được gửi tới trình duyệt. Nếu không, bạn sẽ gặp phải lỗi php_value session.auto_start 18 khét tiếng Tự động bắt đầu một phiênNếu có nhu cầu sử dụng các phiên trong toàn bộ ứng dụng của mình, bạn cũng có thể chọn tự động bắt đầu một phiên mà không cần sử dụng chức năng php_value session.auto_start 15 Có một tùy chọn cấu hình trong php. ini cho phép bạn tự động bắt đầu một phiên cho mọi yêu cầu— session.auto_start = 120. Theo mặc định, nó được đặt thành session.auto_start = 121 và bạn có thể đặt thành session.auto_start = 122 để bật chức năng tự động khởi động session.auto_start = 1 Mặt khác, nếu bạn không có quyền truy cập vào tệp php. ini và bạn đang sử dụng máy chủ web Apache, bạn cũng có thể đặt biến này bằng cách sử dụng. htaccess tệp php_value session.auto_start 1 Nếu bạn thêm dòng trên vào. htaccess, tệp này sẽ tự động bắt đầu một phiên trong ứng dụng PHP của bạn Cách lấy Id phiênNhư chúng ta đã thảo luận trước đó, máy chủ tạo một số duy nhất cho mỗi phiên mới. Nếu muốn lấy id phiên, bạn có thể sử dụng hàm session.auto_start = 123, như minh họa trong đoạn mã sau session.auto_start = 12 Điều đó sẽ cung cấp cho bạn id phiên hiện tại. Hàm session.auto_start = 123 thú vị ở chỗ nó cũng có thể nhận một đối số—id phiên. Nếu muốn thay thế id phiên do hệ thống tạo bằng id của riêng bạn, bạn có thể cung cấp id đó cho đối số đầu tiên của hàm session.auto_start = 123 session.auto_start = 11 Điều quan trọng cần lưu ý là chức năng session.auto_start = 123 phải được đặt trước lệnh gọi php_value session.auto_start 15 khi bạn muốn bắt đầu một phiên với id phiên tùy chỉnh Cách tạo biến phiênTrong phần này, chúng ta sẽ khám phá cách khởi tạo các biến phiên trong PHP Như chúng ta đã thảo luận trước đó, sau khi một phiên bắt đầu, mảng php_value session.auto_start 14 siêu toàn cầu được khởi tạo với thông tin phiên tương ứng. Theo mặc định, nó được khởi tạo với một mảng trống và bạn có thể lưu trữ thêm thông tin bằng cách sử dụng cặp khóa-giá trị Hãy xem đoạn script ví dụ sau minh họa cách khởi tạo các biến phiên session.auto_start = 15 Như bạn có thể thấy, chúng ta đã bắt đầu một phiên ở phần đầu của tập lệnh bằng cách sử dụng hàm php_value session.auto_start 15. Sau đó, chúng tôi đã khởi tạo một vài biến phiên. Cuối cùng, chúng tôi đã truy cập các biến đó bằng cách sử dụng php_value session.auto_start 14 siêu toàn cục Khi bạn lưu trữ dữ liệu trong một phiên bằng cách sử dụng siêu toàn cục php_value session.auto_start 14, dữ liệu cuối cùng sẽ được lưu trữ trong một tệp phiên tương ứng trên máy chủ được tạo khi phiên bắt đầu. Theo cách này, dữ liệu phiên được chia sẻ trên nhiều yêu cầu Như chúng ta đã thảo luận, thông tin phiên được chia sẻ giữa các yêu cầu và do đó, các biến phiên được khởi tạo trên một trang cũng có thể được truy cập từ các trang khác cho đến khi phiên hết hạn. Nói chung, một phiên hết hạn khi đóng trình duyệt Cách sửa đổi và xóa các biến phiênBạn có thể sửa đổi hoặc xóa các biến phiên được tạo trước đó trong ứng dụng giống như đối với các biến PHP thông thường Hãy xem cách sửa đổi các biến phiên session.auto_start = 19 Trong tập lệnh trên, chúng tôi đã kiểm tra xem biến session.auto_start = 112 có được đặt ở vị trí đầu tiên hay không. Nếu nó không được đặt, chúng tôi sẽ đặt nó thành session.auto_start = 122, nếu không, chúng tôi sẽ tăng nó lên session.auto_start = 122. Vì vậy, nếu bạn làm mới trang này nhiều lần, bạn sẽ thấy rằng bộ đếm được tăng lên một lần mỗi lần. Mặt khác, nếu muốn xóa một biến phiên, bạn có thể sử dụng hàm session.auto_start = 115, như minh họa trong đoạn mã sau session.auto_start = 14 Do đó, bạn không còn có thể truy cập vào biến session.auto_start = 116 vì nó đã bị hàm session.auto_start = 115 xóa. Vì vậy, đó là cách bạn có thể thay đổi thông tin phiên Làm thế nào để hủy một phiênTrong phần này, chúng ta sẽ xem cách bạn có thể hủy một phiên. Trong phần trước, chúng ta đã thảo luận về hàm session.auto_start = 115, được sử dụng nếu bạn muốn xóa các biến phiên cụ thể. Mặt khác, nếu muốn xóa tất cả dữ liệu liên quan đến phiên cùng một lúc, bạn có thể sử dụng hàm session.auto_start = 119 Hàm session.auto_start = 119 xóa mọi thứ được lưu trữ trong phiên hiện tại. Phải nói rằng, nó không bỏ đặt các biến toàn cục được liên kết với phiên hoặc bỏ đặt cookie phiên Vì vậy, nếu bạn đang sử dụng hàm session.auto_start = 119 để đăng xuất người dùng, bạn phải bỏ đặt biến php_value session.auto_start 14 cũng như bỏ đặt cookie phiên. Do đó, cách được đề xuất để hủy hoàn toàn một phiên là session.auto_start = 12 Trình xử lý phiênCho đến giờ, chúng ta đã thảo luận về cách bạn có thể thực hiện các hoạt động khác nhau với các biến phiên. Trong phần này, chúng ta sẽ thảo luận về trình xử lý phiên là gì và bạn có thể sử dụng nó như thế nào Trình xử lý phiên PHP là cơ chế hướng dẫn PHP cách quản lý phiên. Trình xử lý phiên mặc định là một hệ thống tệp và điều đó có nghĩa là PHP lưu trữ các phiên trên đĩa. Về cơ bản, đó là một tệp nhỏ trên máy chủ được liên kết với id phiên duy nhất. Đó là cùng một id được lưu trữ trong cookie phiên trên trình duyệt máy khách Trình xử lý phiên mặc định trong PHP cung cấp cho bạn tất cả các tính năng cần thiết, nhưng đôi khi bạn muốn lưu trữ các phiên theo cách khác. Ví dụ: bạn có thể muốn quản lý các phiên trong cơ sở dữ liệu, Redis hoặc một số bộ lưu trữ khác. Trong trường hợp này, bạn cần triển khai trình xử lý phiên tùy chỉnh sẽ ghi đè hành vi mặc định Để hiểu cách thức hoạt động của trình xử lý phiên tùy chỉnh, chúng tôi sẽ thảo luận ngắn gọn về cách bạn có thể triển khai trình xử lý phiên cơ sở dữ liệu để quản lý các phiên trong cơ sở dữ liệu MySQL Cách triển khai Trình xử lý phiên cơ sở dữ liệuTrong vòng đời phiên PHP, có các giai đoạn khác nhau như mở, đọc, ghi và đóng. Ngoài ra còn hai giai đoạn nữa. tiêu hủy và thu gom rác. Vì vậy, khi bạn triển khai trình xử lý phiên tùy chỉnh, bạn phải xử lý từng giai đoạn này để quản lý dữ liệu phiên đúng cách Có hai cách bạn có thể triển khai trình xử lý phiên tùy chỉnh. Bạn có thể xác định các hàm gọi lại cho các giai đoạn khác nhau trong vòng đời của phiên hoặc bạn có thể viết một lớp triển khai giao diện session.auto_start = 153. Trong cả hai trường hợp, bạn cần sử dụng hàm session.auto_start = 154 để khởi chạy trình xử lý phiên tùy chỉnh của mình. Trong trường hợp của chúng tôi, chúng tôi sẽ sử dụng triển khai giao diện session.auto_start = 153 Trong ví dụ của chúng tôi, chúng tôi sẽ lưu trữ các phiên trong cơ sở dữ liệu MySQL. Vì vậy, hãy tạo một bảng lưu trữ dữ liệu phiên bằng cách sử dụng đoạn mã sau session.auto_start = 16 Tiếp theo, hãy xem trình xử lý phiên cơ sở dữ liệu tùy chỉnh của chúng tôi trông như thế nào session.auto_start = 10 Lớp trình xử lý phiên tùy chỉnh của chúng tôi session.auto_start = 156 triển khai giao diện session.auto_start = 153. Do đó, nó phải triển khai các phương thức được khai báo trong giao diện session.auto_start = 153 . Chúng ta sẽ xem xét từng phương pháp này để hiểu cách thức hoạt động của từng phương pháp session.auto_start = 11 Trước tiên, để sử dụng mã này, hãy đảm bảo thay thế session.auto_start = 159, session.auto_start = 190 và các phần giữ chỗ khác bằng các giá trị thực trong phương thức session.auto_start = 191 session.auto_start = 12 Khi phiên bắt đầu, phương thức session.auto_start = 192 được gọi. Nó trả về _______293 nếu kết nối cơ sở dữ liệu thành công. Nếu có bất kỳ sự cố nào khi thiết lập kết nối cơ sở dữ liệu, nó sẽ trả về session.auto_start = 194 session.auto_start = 13 Tiếp theo, PHP gọi phương thức session.auto_start = 195 để đọc dữ liệu phiên. Phương thức session.auto_start = 195 nhận id phiên làm đối số đầu tiên. Chúng tôi sẽ kiểm tra xem có bất kỳ mục nhập nào cho id phiên này trong bảng session.auto_start = 197 không. Nếu nó tồn tại, chúng tôi sẽ trả lại dữ liệu phiên; session.auto_start = 14 Khi PHP cần lưu hoặc đóng một phiên, nó sẽ gọi phương thức session.auto_start = 198 . Nó được sử dụng để ghi dữ liệu phiên trong cơ sở dữ liệu. Chúng tôi đã sử dụng cú pháp session.auto_start = 199 để đảm bảo rằng nếu một mục tồn tại, thì mục đó sẽ được cập nhật; session.auto_start = 15 Phương thức session.auto_start = 140 được gọi sau khi phương thức phiên session.auto_start = 198 đã được gọi. Nó hoạt động tương tự như một hàm hủy trong các lớp. Trong trường hợp của chúng tôi, không có gì đặc biệt cần phải thực hiện trong phương pháp session.auto_start = 140 session.auto_start = 16 Phương thức session.auto_start = 143 được gọi khi phiên bị hủy bằng hàm session.auto_start = 119 hoặc session.auto_start = 145 . Trong phương pháp này, dữ liệu phiên sẽ bị xóa khỏi cơ sở dữ liệu nếu nó tồn tại session.auto_start = 17 Khi PHP chạy trình thu gom rác theo định kỳ, phương thức session.auto_start = 146 được gọi. Biến session.auto_start = 147 giữ giá trị của tùy chọn cấu hình session.auto_start = 148 trong php. tệp ini. Trong phương pháp này, chúng tôi sẽ xóa tất cả các phiên đã hết hạn như một phần của quy trình thu gom rác Sử dụng lớp Trình xử lý phiên MySQLBây giờ, hãy xem cách sử dụng lớp trình xử lý session.auto_start = 156 session.auto_start = 18 Như bạn có thể thấy, chúng ta chỉ cần khởi tạo lớp session.auto_start = 156 và chuyển nó đến hàm session.auto_start = 154 để hướng dẫn PHP rằng nó cần sử dụng lớp session.auto_start = 156 để quản lý phiên. Tiếp theo, chúng ta đã gọi hàm php_value session.auto_start 15 để bắt đầu một phiên. Cuối cùng, chúng tôi đã khởi tạo một biến phiên cho mục đích thử nghiệm Nếu mọi thứ suôn sẻ, bạn sẽ thấy mục nhập phiên trong bảng session.auto_start = 124 như minh họa trong ảnh chụp màn hình sau Và với điều đó, bạn đã tạo một trình xử lý phiên tùy chỉnh đang hoạt động để quản lý các phiên trong cơ sở dữ liệu Sự kết luậnTrong bài viết này, chúng ta đã khám phá những kiến thức cơ bản về xử lý phiên trong PHP. Đó là một khái niệm quan trọng cho phép bạn duy trì thông tin trên các trang web Trong nửa đầu của bài viết, chúng ta đã thảo luận về các khái niệm cơ bản về phiên và sau đó, chúng ta đã tạo một vài ví dụ PHP để minh họa cách bạn có thể tạo và hủy phiên cũng như thao tác với các biến phiên. PHP có thể xử lý bao nhiêu phiên?Không, điều này chính xác có nghĩa là không thể có hơn 30 kết nối đồng thời . Phiên http về cơ bản là một loạt các yêu cầu http có trạng thái chung được lưu trên máy chủ (và thực tế được gọi là 'phiên').
Phiên có thể lưu trữ bao nhiêu dữ liệu?Bộ lưu trữ phiên cũng có thể chứa một lượng dữ liệu khổng lồ. Hầu hết các trình duyệt, kể cả Chrome và Firefox, có thể lưu trữ khoảng 10 MB dữ liệu trong bộ nhớ phiên.
Có giới hạn về biến phiên không?Không có hạn chế về số lượng giá trị mà biến phiên đa nguồn có thể chứa .
Phiên PHP có đáng tin cậy không?“Phiên làm việc PHP có an toàn không? . Các phiên PHP sẽ cho phép máy khách một chuỗi giả ngẫu nhiên (“ID phiên”) để chúng tự phân biệt, nhưng trong trường hợp chuỗi bị chặn bởi kẻ tấn công, kẻ xâm lược có thể tưởng tượng là máy khách đó. PHP sessions are only as secure as your application makes them. PHP sessions will allow the client a pseudorandom string (“session ID”) for them to distinguish themselves with, but on the off chance that the string is intercepted by an attacker, the aggressor can imagine to be that client. |