10 Lỗi PHP Phổ Biến Nhất Mà Người Mới Bắt Đầu Thường Mắc Phải
Bạn viết code. Bạn tải lại trang. Bạn thấy một màn hình trắng xóa.
Điều này xảy ra vì theo mặc định, PHP sẽ không hiển thị lỗi (fails silently). Nếu bạn không thấy lỗi, bạn không thể sửa chúng.
Hãy bắt đầu quá trình phát triển bằng cách thêm các dòng này vào đầu tệp của bạn:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
Việc này buộc PHP phải hiển thị những gì đang sai. Đừng sử dụng điều này trong môi trường production.
Dưới đây là 10 lỗi phổ biến và cách khắc phục chúng.
Thiếu dấu chấm phẩy (Missing Semicolons) PHP cần một dấu chấm phẩy để kết thúc một câu lệnh. Nếu bạn thiếu một dấu, script sẽ dừng lại. Cách khắc phục: Luôn kết thúc các dòng bằng dấu chấm phẩy.
So sánh lỏng lẻo (Loose Comparison) Toán tử
==sẽ thay đổi kiểu dữ liệu trước khi so sánh. Điều này dẫn đến kết quả sai. Cách khắc phục: Sử dụng===. Cách này sẽ kiểm tra cả giá trị và kiểu dữ liệu.Biến chưa được định nghĩa (Undefined Variables) Sử dụng một biến mà bạn chưa tạo sẽ gây ra lỗi logic. Cách khắc phục: Sử dụng toán tử null coalescing.
$name = $_GET['name'] ?? 'Guest';Phạm vi biến toàn cục (Global Variable Scope) Các hàm không thể nhìn thấy các biến nằm bên ngoài chúng. Cách khắc phục: Truyền các biến vào hàm dưới dạng tham số.
SQL Injection Đưa dữ liệu nhập từ người dùng trực tiếp vào một câu truy vấn là rất nguy hiểm. Kẻ tấn công có thể đánh cắp dữ liệu của bạn. Cách khắc phục: Sử dụng prepared statements với các placeholder.
Cross-Site Scripting (XSS) Việc in dữ liệu thô từ người dùng ra màn hình cho phép các script độc hại chạy trên trình duyệt. Cách khắc phục: Sử dụng
htmlspecialchars()cho tất cả các đầu ra.Lỗi Header (Header Errors) Bạn không thể gửi một header sau khi đã gửi bất kỳ văn bản hoặc khoảng trắng nào đến trình duyệt. Cách khắc phục: Đặt các lệnh gọi
header()ở ngay đầu tệp. Luôn sử dụngexit()sau khi thực hiện chuyển hướng (redirect).Thiếu các khóa trong Form (Missing Form Keys) Truy cập vào một khóa form không tồn tại sẽ gây ra lỗi. Cách khắc phục: Sử dụng toán tử null coalescing để cung cấp một giá trị mặc định.
Include so với Require Lệnh
includechỉ đưa ra một cảnh báo nếu thiếu tệp. Script vẫn tiếp tục chạy và sẽ bị lỗi (crash) sau đó. Cách khắc phục: Sử dụngrequire_oncecho các tệp quan trọng như kết nối cơ sở dữ liệu.Không kiểm tra giá trị trả về (Unchecked Return Values) Nhiều hàm PHP trả về
falsenếu chúng thất bại. Việc sử dụng giá trịfalseđó trong bước tiếp theo sẽ gây ra lỗi crash. Cách khắc phục: Kiểm tra xem hàm có trả vềfalsehay không trước khi bạn sử dụng kết quả.
Tóm tắt để viết code tốt hơn:
• Bật báo cáo lỗi trong quá trình phát triển.
• Sử dụng === thay vì ==.
• Kiểm tra các giá trị trả về.
• Làm sạch (sanitize) tất cả dữ liệu nhập từ người dùng.
Nguồn: https://dev.to/bikkisingh/top-10-php-bugs-every-beginner-makes-and-how-to-fix-them-1anh