Các phiên PHP có tốt không?

Quản lý phiên HTTP đại diện cho cốt lõi của bảo mật web. Tất cả các biện pháp giảm thiểu có thể NÊN được áp dụng để đảm bảo các phiên được bảo mật. Các nhà phát triển cũng nên kích hoạt/sử dụng các biện pháp bảo mật hiện hành

Trong PHP, phiên cung cấp cách lưu trữ tùy chọn của khách truy cập trang web trên máy chủ web dưới dạng các biến có thể được sử dụng trên nhiều trang. Không giống như cookie, thông tin biến không được lưu trữ trên máy tính của người dùng. Thông tin được truy xuất từ ​​máy chủ web khi một phiên được mở ở đầu mỗi trang web. Phiên hết hạn khi trang web bị đóng

Một số thông tin, chẳng hạn như tên người dùng và thông tin đăng nhập xác thực, tốt hơn nên được lưu trong cookie vì chúng cần thiết trước khi truy cập trang web. Tuy nhiên, các phiên cung cấp bảo mật tốt hơn cho thông tin cá nhân cần thiết sau khi trang web khởi chạy và chúng cung cấp mức độ tùy chỉnh cho khách truy cập vào trang web

Gọi mã ví dụ này là mypage. php

Điều đầu tiên mã ví dụ này thực hiện là mở phiên bằng cách sử dụng hàm session_start(). Sau đó, nó đặt các biến phiên—màu sắc, kích thước và hình dạng—tương ứng là màu đỏ, nhỏ và tròn

Cũng như với cookie, mã session_start() phải nằm trong tiêu đề của mã và bạn không thể gửi bất kỳ thứ gì tới trình duyệt trước mã đó. Tốt nhất là chỉ cần đặt nó trực tiếp sau

Phiên đặt một cookie nhỏ trên máy tính của người dùng để dùng làm khóa. Nó chỉ là chìa khóa; . Máy chủ web tìm khóa đó khi người dùng nhập URL cho một trong các trang web được lưu trữ trên máy chủ của nó. Nếu máy chủ tìm thấy khóa, phiên và thông tin chứa trong đó sẽ được mở cho trang đầu tiên của trang web. Nếu máy chủ không tìm thấy khóa, người dùng sẽ truy cập trang web, nhưng thông tin được lưu trên máy chủ không được chuyển đến trang web

02

của 03

Sử dụng biến phiên

Mỗi trang trên trang web cần truy cập vào thông tin được lưu trữ trong phiên phải có chức năng  session_start() được liệt kê ở đầu mã cho trang đó. Lưu ý rằng các giá trị cho các biến không được chỉ định trong mã

Gọi mã này là mypage2. php

Tất cả các giá trị được lưu trữ trong mảng $_SESSION, được truy cập tại đây. Một cách khác để hiển thị điều này là chạy mã này

Bạn cũng có thể lưu trữ một mảng trong mảng phiên. Quay lại trang của chúng tôi. php và chỉnh sửa nó một chút để làm điều này

Bây giờ hãy chạy cái này trên mypage2. php để hiển thị thông tin mới của chúng tôi

03

của 03

Sửa đổi hoặc loại bỏ một phiên

Mã này trình bày cách chỉnh sửa hoặc xóa các biến phiên riêng lẻ hoặc toàn bộ phiên. Để thay đổi một biến phiên, bạn chỉ cần đặt lại nó thành một thứ khác bằng cách gõ ngay trên nó. Bạn có thể sử dụng unset() để xóa một biến hoặc sử dụng session_unset() để xóa tất cả các biến cho một phiên. Bạn cũng có thể sử dụng session_destroy() để hủy phiên hoàn toàn

Theo mặc định, một phiên kéo dài cho đến khi người dùng đóng trình duyệt của mình. Tùy chọn này có thể được thay đổi trong php. ini trên máy chủ web bằng cách thay đổi 0 trong phiên. cookie_lifetime = 0 thành số giây bạn muốn phiên kéo dài hoặc bằng cách sử dụng session_set_cookie_params()

Trích dẫn bài viết này

Sự sắp xếp

trích dẫn của bạn

Bradley, Angela. "Hiểu cách hoạt động của các phiên PHP. "ThinkCo. https. //www. suy nghĩ. com/basic-php-sessions-2693797 (truy cập ngày 29 tháng 1 năm 2023)

Một cách khác để làm cho dữ liệu có thể truy cập được trên các trang khác nhau của toàn bộ trang web là sử dụng Phiên PHP

Một phiên tạo một tệp trong một thư mục tạm thời trên máy chủ nơi các biến phiên đã đăng ký và giá trị của chúng được lưu trữ. Dữ liệu này sẽ có sẵn cho tất cả các trang trên trang web trong lần truy cập đó

Vị trí của tệp tạm thời được xác định bởi cài đặt trong tệp php. ini được gọi là phiên. Lưu đường dẫn. Trước khi sử dụng bất kỳ biến phiên nào, hãy đảm bảo rằng bạn đã thiết lập đường dẫn này

Khi một phiên được bắt đầu, những điều sau đây sẽ xảy ra -

  • Trước tiên, PHP tạo một mã định danh duy nhất cho phiên cụ thể đó là một chuỗi ngẫu nhiên gồm 32 số thập lục phân, chẳng hạn như 3c7foj34c3jj973hjkop2fc937e3443

  • Cookie có tên PHPSESSID được tự động gửi đến máy tính của người dùng để lưu trữ chuỗi nhận dạng phiên duy nhất

  • Một tệp được tạo tự động trên máy chủ trong thư mục tạm thời được chỉ định và mang tên của mã định danh duy nhất có tiền tố là sess_ tức là sess_3c7foj34c3jj973hjkop2fc937e3443

Khi một tập lệnh PHP muốn truy xuất giá trị từ một biến phiên, PHP sẽ tự động lấy chuỗi mã định danh phiên duy nhất từ ​​cookie PHPSESSID và sau đó tìm trong thư mục tạm thời của nó để tìm tệp mang tên đó và có thể thực hiện xác thực bằng cách so sánh cả hai giá trị

Một phiên kết thúc khi người dùng mất trình duyệt hoặc sau khi rời khỏi trang web, máy chủ sẽ kết thúc phiên sau một khoảng thời gian định trước, thường là 30 phút

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

Một phiên PHP có thể dễ dàng bắt đầu bằng cách gọi hàm session_start(). Trước tiên, chức năng này kiểm tra xem một phiên đã bắt đầu chưa và nếu chưa có phiên nào bắt đầu thì nó sẽ bắt đầu một phiên. Bạn nên gọi hàm session_start() ở đầu trang

Các biến phiên được lưu trữ trong mảng kết hợp có tên $_SESSION[]. Các biến này có thể được truy cập trong suốt thời gian tồn tại của phiên

Ví dụ sau bắt đầu một phiên, sau đó đăng ký một biến có tên là bộ đếm được tăng lên mỗi khi trang được truy cập trong phiên

Sử dụng hàm isset() để kiểm tra xem biến phiên đã được đặt hay chưa

Đặt mã này trong một bài kiểm tra. php và tải tệp này nhiều lần để xem kết quả –



   
   
      Setting up a PHP session
   
   
   
      
   
   

Nó sẽ tạo ra kết quả sau -

You have visited this page 1in this session.

Phá hủy phiên PHP

Phiên PHP có thể bị hủy bởi hàm session_destroy(). Hàm này không cần bất kỳ đối số nào và một lệnh gọi có thể hủy tất cả các biến phiên. Nếu bạn muốn hủy một biến phiên thì bạn có thể sử dụng hàm unset() để hủy đặt một biến phiên

Đây là ví dụ để hủy đặt một biến duy nhất -

Đây là cuộc gọi sẽ hủy tất cả các biến phiên -

Bật phiên tự động

Bạn không cần gọi hàm start_session() để bắt đầu phiên khi người dùng truy cập trang web của bạn nếu bạn có thể đặt phiên. biến auto_start thành 1 trong php. tập tin ini

Có thể xảy ra trường hợp người dùng không cho phép lưu trữ cookie trên máy của họ. Vì vậy, có một phương pháp khác để gửi ID phiên tới trình duyệt

Ngoài ra, bạn có thể sử dụng hằng số SID được xác định nếu phiên bắt đầu. Nếu khách hàng không gửi cookie phiên thích hợp, nó sẽ có dạng session_name=session_id. Mặt khác, nó mở rộng thành một chuỗi rỗng. Do đó, bạn có thể nhúng nó vô điều kiện vào các URL

Ví dụ sau minh họa cách đăng ký một biến và cách liên kết chính xác đến một trang khác bằng SID

Khi nào bạn nên sử dụng phiên PHP?

Phiên PHP được sử dụng để lưu trữ và chuyển thông tin từ trang này sang trang khác tạm thời (cho đến khi người dùng đóng trang web) . Kỹ thuật phiên PHP được sử dụng rộng rãi trong các trang web mua sắm, nơi chúng tôi cần lưu trữ và chuyển thông tin giỏ hàng e. g. tên người dùng, mã sản phẩm, tên sản phẩm, giá sản phẩm, v.v. từ trang này sang trang khác.

Nhược điểm của phiên trong PHP là gì?

Nhược điểm. 1. Chi phí hoạt động trong trường hợp số lượng người dùng lớn do dữ liệu phiên được lưu trữ trong bộ nhớ máy chủ. 2. Chi phí liên quan đến tuần tự hóa và hủy tuần tự hóa dữ liệu phiên vì trong trường hợp chế độ phiên StateServer và SQLServer, chúng ta cần tuần tự hóa đối tượng trước khi lưu trữ.
Các phiên được bảo mật hơn so với cookie , vì chúng lưu dữ liệu ở dạng mã hóa. Cookie không an toàn vì dữ liệu được lưu trữ trong tệp văn bản và nếu bất kỳ người dùng trái phép nào có quyền truy cập vào hệ thống của chúng tôi, anh ta có thể kiểm soát dữ liệu.

Các phiên PHP có thể bị tấn công không?

Các phiên KHÔNG phải là phía máy chủ, chúng được lưu trữ trên máy cục bộ của khách hàng (bạn có thể truy cập cookie của mình và tìm cookie có tên phpssid dưới tên miền của bạn). Có, chúng có thể bị tấn công và đây thực tế là một phương thức tấn công rất phổ biến.