Andrei Zmievski đã có bài viết trên blog của mình về một tính năng mới  của PHP 6 cuối cùng đã được giải quyết: vấn đề giải mã dữ liệu vào (input request decoding).

Trước đây, có không ít hơn 4 phương thức để thực hiện công việc này. Nhưng cách thức được đề nghị là uyển chuyển, hiệu quả, trực giác và đơn giản hơn cả. Nó chỉ có vài khuyết điểm nhỏ.

Andrei mô tả tiến trình này là "lazy evaluation scheme": PHP lưu dữ liệu vào mà không tiến hành lọc hay xử lí bất cứ gì, cho đến khi bạn truy xuất dữ liệu (thông qua $_GET, $_POST...), PHP sẽ dựa vào các thông số encoding bạn thiết lập để chuyển đổi dữ liệu một cách thích hợp. Cách làm này có nhiều ưu điểm:

  1. PHP không cần phải đoán encoding trong giai đoạn parsing;
  2. Cho phép chương trình thiết lập giá trị encoding một cách tường minh;
  3. PHP không cần giải mã cho đến khi nó được yêu cầu, việc này sẽ giảm overheading của chương trình;
  4. Khi có lỗi trong lúc chuyển đổi, chương trình có thể can thiệp thông qua các handle xử lí lỗi tùy biến.

Khuyết điểm duy nhất cho đến nay được Rasmus chỉ ra: hacker có thể chèn mã nguy hiểm vào dữ liệu vào, có thể gây lỗi khi quá trình giải mã được thực hiện lần đầu tiên. Tuy nhiên Andrei cho rằng các ưu điểm tỏ ra vượt trội khuyết điểm này, và việc lọc dữ liệu vào được thực hiện hoàn toàn độc lập với việc chuyển đổi.

(theo PHPdeveloper.org) 




Bình luận

  • TTCN (0)