Nói về “register_globals” trên PHP v5.4

Nói về “register_globals” trên PHP v5.4

Tình trạng website PHP sau khi được upgrage từ PHPv5.2, PHPv5.3,…lên thành PHP v5.4, thường bị các lỗi phát sinh do không lấy được giá trị POST, GET, SESSION, SERVER, COOKIE. Cùng mình tìm hiểu nhé!

Mình có 1 ví dụ cụ thể nhất để các bạn dễ hình dung: trường hợp chúng ta mã hóa dữ liệu form enctype=”multipart/form-data” để submit thì website báo lỗi nhưng form không mã hóa thì hoạt động bình thường. Tại sao lại vậy?

– Nguyên nhân là do register_globals chưa được kích hoạt >>> không lấy được POST value. Bạn có thể tham khảo chi tiết tại Tìm hiểu về PHP v5.4Sự khác biệt giữa PHPv5.2 và PHPv5.3

– Do đó những Web form khi đưa một giá trị theo phương thức POST (mã hoá enctype=”multipart/form-data”) sẽ phát sinh lỗi ERROR 500 vì không đăng ký được biến đã định nghĩa.

Để khắc phục tình trạng này, chúng ta có thể lựa chọn 1 trong 2 giải pháp sau :

1. Thay đổi version PHP ( <= PHPv5.3 ) để sử dụng register_globals

Chúng tôi hay bất kì nhà cung cấp dịch vụ Web-hosting nào khác cũng sẵn sàng hỗ trợ thay đổi server hosting có version PHP tương ứng với nhu cầu của bạn.

2. Tiếp tục PHPv5.4 trở lên

– Bạn có thể định nghĩa đoạn code sau ngay đầu trang web form :

– Đoạn code trên thay thế register_globals đã không còn hỗ trợ trên PHPv5.4. Đây cũng là giải pháp tốt nhất để coder tháo gỡ được các lỗi không những liên quan đến POST/GET mà còn fix được các lỗi từ SESSION, SERVER, COOKIE nữa.

Chia sẻ bài viết

Bình luận