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 Học lập trình 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à các 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 chuyến thăm đó.
Vị trí của tệp tạm thời được xác định bởi một cài đặt trong tệp Học lập trình PHP có tên session.save_path . Trước khi sử dụng bất kỳ biến phiên nào, hãy đảm bảo bạn đã thiết lập đường dẫn này.
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ư
Một cookie có tên PHPSESSID sẽ tự động được 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ự động tạo 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 tập lệnh PHP muốn truy xuất giá trị từ biến phiên, Học lập trình PHP sẽ tự động lấy chuỗi số nhận dạng phiên duy nhất từ cookie PHPSESSID và sau đó tìm trong thư mục tạm thời của tệp đó mang tên đó và xác thực có thể được thực hiện 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ẽ chấm dứt phiên sau một khoảng thời gian xác định trước, thường là thời gian 30 phút.
Một phiên PHP dễ dàng được bắt đầu bằng cách thực hiện cuộc gọi đến hàm session_start (). Hàm này trước tiên kiểm tra xem một phiên đã được bắt đầu chưa và nếu không bắt đầu thì nó bắt đầu một phiên. Bạn nên đặt cuộc gọi đến session_start () ở đầu trang.
Các biến phiên được lưu trữ trong mảng kết hợp được gọi là $ _SESSION [] . Các biến này có thể được truy cập trong suốt vòng đời của phiên.
Ví dụ sau đây bắt đầu một phiên sau đó đăng ký một biến gọi 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 vào tệp test.php và tải tệp này nhiều lần để xem kết quả
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à các 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 chuyến thăm đó.
![]() |
| Học lập trình PHP chuyên nghiệp |
Vị trí của tệp tạm thời được xác định bởi một cài đặt trong tệp Học lập trình PHP có tên session.save_path . Trước khi sử dụng bất kỳ biến phiên nào, hãy đảm bảo bạn đã thiết lập đường dẫn này.
Khi một phiên được bắt đầu sau những điều 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ư
Một cookie có tên PHPSESSID sẽ tự động được 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ự động tạo 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 tập lệnh PHP muốn truy xuất giá trị từ biến phiên, Học lập trình PHP sẽ tự động lấy chuỗi số nhận dạng phiên duy nhất từ cookie PHPSESSID và sau đó tìm trong thư mục tạm thời của tệp đó mang tên đó và xác thực có thể được thực hiện 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ẽ chấm dứt phiên sau một khoảng thời gian xác định trước, thường là thời gian 30 phút.
Bắt đầu một phiên PHP
Một phiên PHP dễ dàng được bắt đầu bằng cách thực hiện cuộc gọi đến hàm session_start (). Hàm này trước tiên kiểm tra xem một phiên đã được bắt đầu chưa và nếu không bắt đầu thì nó bắt đầu một phiên. Bạn nên đặt cuộc gọi đến session_start () ở đầu trang.
Các biến phiên được lưu trữ trong mảng kết hợp được gọi là $ _SESSION [] . Các biến này có thể được truy cập trong suốt vòng đời của phiên.
Ví dụ sau đây bắt đầu một phiên sau đó đăng ký một biến gọi 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 vào tệp test.php và tải tệp này nhiều lần để xem kết quả
<?php session_start(); if( isset( $_SESSION['counter'] ) ) { $_SESSION['counter'] += 1; }else { $_SESSION['counter'] = 1; } $msg = "You have visited this page ". $_SESSION['counter']; $msg .= "in this session."; ?> <html> <head> <title>Setting up a PHP session</title> </head> <body> <?php echo ( $msg ); ?> </body> </html>Nó sẽ tạo ra kết quả sau
You have visited this page 1in this session.
Phá hủy một phiên PHP
Một phiên Học lập trình 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 cuộc gọi có thể phá 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 duy nhất thì bạn có thể sử dụng hàm unset () để hủy đặt biến phiên.
Dưới đây là ví dụ để bỏ đặt một biến duy nhất
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 biến session.auto_start thành 1 trong tệp php.ini .
Phiên không có cookie
Có thể có 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 SID không đổi đượ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ó 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.
Các htmlspecialchars () có thể được sử dụng khi in SID để ngăn chặn các cuộc tấn công liên quan XSS.
Dưới đây là ví dụ để bỏ đặt một biến duy nhất
<?php unset($_SESSION['counter']); ?>Đây là cuộc gọi sẽ hủy tất cả các biến phiên
<?php session_destroy(); ?>
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 biến session.auto_start thành 1 trong tệp php.ini .
Phiên không có cookie
Có thể có 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 SID không đổi đượ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ó 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.
<?php session_start(); if (isset($_SESSION['counter'])) { $_SESSION['counter'] = 1; }else { $_SESSION['counter']++; } $msg = "You have visited this page ". $_SESSION['counter']; $msg .= "in this session."; echo ( $msg ); ?> <p> To continue click following link <br /> <a href = "nextpage.php?<?php echo htmlspecialchars(SID); ?>"> </p>Nó sẽ tạo ra kết quả sau
You have visited this page 1in this session.
To continue click following link
Các htmlspecialchars () có thể được sử dụng khi in SID để ngăn chặn các cuộc tấn công liên quan XSS.



