Top 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 nhấn làm mớ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). Bạn phải buộc nó hiển thị lỗi trong quá trình phát triển.

Thêm các dòng này vào đầu các file của bạn:

ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);

Đừng sử dụng cách này trong môi trường production. Hãy sử dụng file log thay thế.

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 PHP sẽ ngừng hoạt động nếu bạn quên dấu chấm phẩy. Nó thường gây ra lỗi ngầm (silent crash). Cách khắc phục: Đảm bảo mọi câu lệnh đều kết thúc bằng dấu chấm phẩy.

  • So sánh lỏng lẻo (== so với ===) Toán tử bằng kép thực hiện ép kiểu (type coercion). Điều này dẫn đến các lỗi logic. Cách khắc phục: Sử dụng toán tử bằng ba (===). Nó kiểm tra cả giá trị và kiểu dữ liệu.

  • Biến chưa được định nghĩa Sử dụng một biến trước khi gán giá trị cho nó sẽ làm hỏng logic của bạn. Cách khắc phục: Sử dụng toán tử null coalescing. Ví dụ: $name = $_GET['name'] ?? 'Guest';

  • Phạm vi của biến toàn cục 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 Việc xây dựng các câu truy vấn bằng dữ liệu nhập từ người dùng cho phép tin tặc đánh cắp dữ liệu. Cách khắc phục: Sử dụng prepared statements với các placeholder (?).

  • Cross-Site Scripting (XSS) Việc in trực tiếp dữ liệu nhập từ người dùng cho phép các đoạn mã độc chạy trên trình duyệt. Cách khắc phục: Bao bọc đầu ra trong hàm htmlspecialchars().

  • Headers Already Sent Bạn không thể chuyển hướng người dùng nếu bạn đã gửi văn bản đến trình duyệt. Thậm chí chỉ một khoảng trắng cũng có thể gây ra lỗi này. Cách khắc phục: Đặt các lời gọi header() ở ngay đầu file. Luôn sử dụng exit() sau khi chuyển hướng.

  • Key mảng chưa được định nghĩa Truy cập vào một key của form không tồn tại sẽ gây ra các cảnh báo (warnings). Cách khắc phục: Sử dụng toán tử null coalescing cho tất cả dữ liệu $_POST và $_GET.

  • Include so với Require Include chỉ hiển thị cảnh báo nếu thiếu file. Script vẫn tiếp tục chạy và có thể gây lỗi ở bước sau. Cách khắc phục: Sử dụng require_once cho các file quan trọng như kết nối cơ sở dữ liệu.

  • Không kiểm tra giá trị trả về Nhiều hàm PHP trả về false khi thất bại. Nếu bạn sử dụng kết quả đó ngay lập tức, bạn sẽ gặp thêm nhiều lỗi khác. Cách khắc phục: Kiểm tra xem kết quả có phải là false hay không trước khi sử dụng.

Tóm tắt để thành công:

  • Bật báo cáo lỗi trong môi trường phát triển.
  • Sử dụng === cho tất cả các phép so sánh.
  • Làm sạch (sanitize) tất cả dữ liệu nhập từ người dùng.
  • Kiểm tra các giá trị trả về.

Nguồn: https://dev.to/bikkisingh/top-10-php-bugs-every-beginner-makes-and-how-to-fix-them-1anh