Thứ Năm, 28 tháng 2, 2019

Đào tạo PHP - PHP - Phiên

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 đó.

Học lập trình PHP chuyên nghiệp
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
<?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.

Không có nhận xét nào:

Đăng nhận xét

lập trình PHP cho các nhà phát triển PERL

Chương này sẽ liệt kê những điểm tương đồng và khác biệt chính giữa PHP và PERL. Điều này sẽ giúp các nhà phát triển PERL hiểu PHP rất nhanh...